int numberWriteRecords = 0x4000; // 1GB log space private async Task Write4KLogFile( ILogicalLog lLog ) { byte[] writeRecord = new byte[writeRecordSize]; try { if (_DedicatedLogOnly) { await lLog.ConfigureWritesToOnlyDedicatedLogAsync(CancellationToken.None); } for (int i = 0; i < numberWriteRecords; i++) { for (int j = 0; j < writeRecordSize; j++) { writeRecord[j] = (byte)(i * j); } await lLog.AppendAsync(writeRecord, 0, writeRecord.Length, CancellationToken.None); await lLog.FlushWithMarkerAsync(CancellationToken.None); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
void AppendLogicalLog( ILogicalLog logicalLog, byte[] buffer) { Task t = logicalLog.AppendAsync(buffer, 0, buffer.Length, CancellationToken.None); t.Wait(); }
private async Task LogPerformanceWorkloadWorker( ILogicalLog lLog, byte[] recordBuffer, TestLogNotification tn75, CancellationToken tn75CancelToken, CancellationToken CancelToken ) { try { Task taskUsageNotification75; long bytes = 0; taskUsageNotification75 = tn75.SetupLogUsageNotificationAsync(lLog, 75, tn75CancelToken); if (_DedicatedLogOnly) { await lLog.ConfigureWritesToOnlyDedicatedLogAsync(CancellationToken.None); } bool canceled = false; this.StartPerfWorkloads.WaitOne(); while (!canceled) { await lLog.AppendAsync(recordBuffer, 0, 40, /*recordBuffer.Length,*/ CancellationToken.None); bytes += 40; /*recordBuffer.Length;*/ if (tn75.Fired) { // // Truncate back to 10% // long allowedData = lLog.Length / 10; long truncationPosition = bytes - allowedData; lLog.TruncateHead(truncationPosition); taskUsageNotification75 = tn75.SetupLogUsageNotificationAsync(lLog, 75, tn75CancelToken); } if (CancelToken.IsCancellationRequested) { canceled = true; } } await lLog.FlushWithMarkerAsync(CancellationToken.None); Interlocked.Add(ref this.TotalByteCount, bytes); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } Console.WriteLine("Tasks completed"); return; }
private async Task Write4KLogFile( ILogicalLog lLog, string s ) { byte[] writeRecord = new byte[writeRecordSize]; long ticksWriting = 0; long frequencyPerMs = Stopwatch.Frequency / 1000; Stopwatch swTotal = new Stopwatch(); Stopwatch swWriting = new Stopwatch(); try { if (_DedicatedLogOnly) { await lLog.ConfigureWritesToOnlyDedicatedLogAsync(CancellationToken.None); } swTotal.Start(); for (int i = 0; i < _NumberRecords; i++) { for (int j = 0; j < writeRecordSize; j++) { writeRecord[j] = (byte)(i * j); } swWriting.Restart(); await lLog.AppendAsync(writeRecord, 0, writeRecord.Length, CancellationToken.None); swWriting.Stop(); ticksWriting += swWriting.ElapsedTicks; } await lLog.FlushWithMarkerAsync(CancellationToken.None); swTotal.Stop(); Console.WriteLine("Write {0}: Total ms {1} Writing ms {2}", s, swTotal.ElapsedMilliseconds, ticksWriting / frequencyPerMs); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }