private static void DoMonitor(long loggingSteps)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();

            Console.WriteLine("steps\tWorking Set(MB)\tPrivate Memory(MB)\tPage File(MB)\tTotal CPU Usage\tDisk Time");
            TotalCPUCounter  cpuCounter  = new TotalCPUCounter();
            DiskUsageCounter diskCounter = new DiskUsageCounter();
            MonitorProcesses monitor     = new MonitorProcesses(cpuCounter, diskCounter);

            for (int i = 0; i < loggingSteps; i++)
            {
                DateTime targetTime  = DateTime.Now;
                long     currentTime = GetUnixTime(targetTime);

                Console.Write(String.Format("{0, 8}", i));
                Task.Run(() => monitor.Run());

                while (GetUnixTime(DateTime.Now) <= currentTime)
                {
                    Thread.Sleep(1);
                }
            }
            sw.Stop();
            Console.Write(String.Format("{0, 8}", loggingSteps));
            monitor.Run();
            Console.WriteLine(String.Format("elapsed time(second): {0}", (float)(sw.ElapsedMilliseconds / 1000.0)));

            Console.WriteLine("Minotoring done.");
        }
        static void DoBenchmarkBatchedLoremIpsum(EventLog benchLog, long batchSize, long totalSteps, long loremIpsumLength)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();

            //  loremIpsumLength should be less equal than 65535.
            loremIpsumLength = loremIpsumLength > 65535 ? 65535 : loremIpsumLength;

            Console.WriteLine("events\tWorking Set(MB)\tPrivate Memory(MB)\tPage File(MB)\tTotal CPU Usage\tDisk Time");
            TotalCPUCounter  cpuCounter  = new TotalCPUCounter();
            var              text        = LoremIpsum.ASCIIText();
            Encoding         e           = System.Text.Encoding.GetEncoding("UTF-8");
            string           result      = new String(text.TakeWhile((c, i) => e.GetByteCount(text.Substring(0, i + 1)) <= loremIpsumLength).ToArray());
            DiskUsageCounter diskCounter = new DiskUsageCounter();
            MonitorProcesses monitor     = new MonitorProcesses(cpuCounter, diskCounter);

            long batchNum    = batchSize / BINNUM;
            long residualNUM = batchSize % BINNUM;

            for (int i = 0; i < totalSteps; i++)
            {
                DateTime targetTime  = DateTime.Now;
                long     currentTime = GetUnixTime(targetTime);

                Console.Write(String.Format("{0, 8}", i * batchSize));
                Task.Run(() => monitor.Run());

                for (int j = 0; j < BINNUM; j++)
                {
                    for (int k = 0; k < batchNum; k++)
                    {
                        // Write an informational entry to the event log.
                        benchLog.WriteEntry(result);
                    }
                    //Thread.Sleep(10);
                }
                for (int j = 0; j < residualNUM; j++)
                {
                    benchLog.WriteEntry(result);
                }

                while (GetUnixTime(DateTime.Now) <= currentTime)
                {
                    Thread.Sleep(1);
                }
            }

            sw.Stop();
            Console.Write(String.Format("{0, 8}", totalSteps * batchSize));
            monitor.Run();
            Console.WriteLine(String.Format("Flow rate: {0} events per second.", (totalSteps * batchSize) / (float)(sw.ElapsedMilliseconds / 1000.0)));

            Console.WriteLine("Message written to event log.");
        }
Ejemplo n.º 3
0
        private static void DoBenchMark(int rate, long loggingSteps, int optionLength, string outputFile)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();

            Console.WriteLine("steps\tWorking Set(MB)\tPrivate Memory(MB)\tPage File(MB)\tTotal CPU Usage\tDisk Time");
            TotalCPUCounter  cpuCounter  = new TotalCPUCounter();
            DiskUsageCounter diskCounter = new DiskUsageCounter();
            MonitorProcesses monitor     = new MonitorProcesses(cpuCounter, diskCounter);

            long      batchNum    = rate / BINNUM;
            long      residualNUM = rate % BINNUM;
            Generator generator   = new Generator(optionLength);

            for (int i = 0; i < loggingSteps; i++)
            {
                DateTime targetTime  = DateTime.Now;
                long     currentTime = GetUnixTime(targetTime);

                Console.Write(String.Format("{0, 8}", i));
                Task.Run(() => monitor.Run());

                using (StreamWriter file = new StreamWriter(outputFile, true))
                {
                    for (int j = 0; j < BINNUM; j++)
                    {
                        for (int k = 0; k < batchNum; k++)
                        {
                            file.WriteLine(generator.Run());
                        }
                        Thread.Sleep(10);
                    }
                    for (int j = 0; j < residualNUM; j++)
                    {
                        file.WriteLine(generator.Run());
                    }
                }
                while (GetUnixTime(DateTime.Now) <= currentTime)
                {
                    Thread.Sleep(1);
                }
            }
            sw.Stop();
            Console.Write(String.Format("{0, 8}", loggingSteps));
            monitor.Run();
            Console.WriteLine(String.Format("elapsed time(second): {0}", (float)(sw.ElapsedMilliseconds / 1000.0)));

            Console.WriteLine("Message written to file.");
        }
        static void DoBenchmarkLoremIpsum(EventLog benchLog, int waitMSec, long totalEvents, long loremIpsumLength)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();

            //  loremIpsumLength should be less equal than 65535.
            loremIpsumLength = loremIpsumLength > 65535 ? 65535 : loremIpsumLength;

            Console.WriteLine("events\tWorking Set(MB)\tPrivate Memory(MB)\tPage File(MB)\tTotal CPU Usage\tDisk Time");
            TotalCPUCounter  cpuCounter  = new TotalCPUCounter();
            var              text        = LoremIpsum.ASCIIText();
            Encoding         e           = System.Text.Encoding.GetEncoding("UTF-8");
            string           result      = new String(text.TakeWhile((c, i) => e.GetByteCount(text.Substring(0, i + 1)) <= loremIpsumLength).ToArray());
            DiskUsageCounter diskCounter = new DiskUsageCounter();
            MonitorProcesses monitor     = new MonitorProcesses(cpuCounter, diskCounter);

            for (int i = 0; i < totalEvents / 10; i++)
            {
                if (i % 10 == 0)
                {
                    Console.Write(String.Format("{0, 8}", i * 10));
                    Task.Run(() => monitor.Run());
                }

                // Write an informational entry to the event log.
                benchLog.WriteEntry(result);
                benchLog.WriteEntry(result);
                benchLog.WriteEntry(result);
                benchLog.WriteEntry(result);
                benchLog.WriteEntry(result);
                benchLog.WriteEntry(result);
                benchLog.WriteEntry(result);
                benchLog.WriteEntry(result);
                benchLog.WriteEntry(result);
                benchLog.WriteEntry(result);
                Thread.Sleep(waitMSec);
            }
            sw.Stop();
            Console.Write(String.Format("{0, 8}", totalEvents));
            monitor.Run();
            Console.WriteLine(String.Format("Flow rate: {0} events per second.", totalEvents / (float)(sw.ElapsedMilliseconds / 1000.0)));

            Console.WriteLine("Message written to event log.");
        }
        static void DoBenchmark(EventLog benchLog, int waitMSec, long totalEvents)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();

            Console.WriteLine("events\tWorking Set(MB)\tPrivate Memory(MB)\tPage File(MB)\tTotal CPU Usage\t%Disk Time");
            TotalCPUCounter  cpuCounter  = new TotalCPUCounter();
            DiskUsageCounter diskCounter = new DiskUsageCounter();
            MonitorProcesses monitor     = new MonitorProcesses(cpuCounter, diskCounter);

            for (int i = 0; i < totalEvents / 10; i++)
            {
                if (i % 10 == 0)
                {
                    Console.Write(String.Format("{0, 8}", i * 10));
                    Task.Run(() => monitor.Run());
                }

                // Write an informational entry to the event log.
                benchLog.WriteEntry(String.Format("Writing to event log. {0} times.", i));
                benchLog.WriteEntry("ⒻⓁuenⓉⒹ™");
                benchLog.WriteEntry("日本語による説明");
                benchLog.WriteEntry("สวัสดีจาก Fluentd!");
                benchLog.WriteEntry("Привет, от Fluentd.");
                benchLog.WriteEntry("Γεια σου, από την Fluentd.");
                benchLog.WriteEntry("مرحبًا ، من Fluentd.");
                benchLog.WriteEntry("हाय, Fluentd से!");
                benchLog.WriteEntry("We ❤ Fluentd!(●'◡'●)");
                benchLog.WriteEntry("Logging is fun! 😀😁😍🤩😋");
                Thread.Sleep(waitMSec);
            }
            sw.Stop();
            Console.Write(String.Format("{0, 8}", totalEvents));
            monitor.Run();
            Console.WriteLine(String.Format("Flow rate: {0} events per second.", totalEvents / (float)(sw.ElapsedMilliseconds / 1000.0)));

            Console.WriteLine("Message written to event log.");
        }