Example #1
0
        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());
            }
        }
Example #2
0
        void AppendLogicalLog(
            ILogicalLog logicalLog,
            byte[] buffer)
        {
            Task t = logicalLog.AppendAsync(buffer, 0, buffer.Length, CancellationToken.None);

            t.Wait();
        }
Example #3
0
        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;
        }
Example #4
0
        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());
            }
        }