お世話になっております。
管理用のサーバーでプログラムを起動する際にCPUやメモリにどれくらい負荷がかかっているかを1分おきに取得しcsvとして記録に残したいと考えています。
以前質問でCPU使用率、メモリ使用量については実装できたのですが。今回はメモリ使用率を取得しメモリ全体の何%を占めているのかを調べたいと考えています。
p.WorkingSet64を使ってメモリの使用量を書き出すことは出来たので、
メモリの使用量 / メモリの全体 * 100 = メモリの使用率(%)という風に出せるのではないかと考えたのですが、メモリの全体をどうしたら出せるのかが分かりません。
どなたかご教授お願い致します。
using System; using System.Threading; using System.Diagnostics; using System.IO; using System.Configuration; namespace CodeRecipe_Timer_CS { class Program { static void Main(string[] args) { using (PerformanceCounter pc = new PerformanceCounter("Processor", "% Processor Time", "_Total", true)) { AutoResetEvent autoEvent = new AutoResetEvent(false); TimerCallback tDelegate = new TimerCallback(GetCpuUsage); using (Timer oTimer = new Timer(tDelegate, pc, 0, 60000)) { autoEvent.WaitOne(-1, false); //Thread.Sleep(86400000); } } //Console.WriteLine("Timer を停止しました。終了するには何かキーを押してください。"); Console.Read(); } static void GetCpuUsage(object state) { string today = DateTime.Now.ToString("yyyyMMdd"); string month = DateTime.Now.ToString("yyyyMM"); PerformanceCounter pc = state as PerformanceCounter; DateTime dtNow = DateTime.Now; System.Diagnostics.Process p = System.Diagnostics.Process.GetCurrentProcess(); p.Refresh(); Microsoft.VisualBasic.Devices.ComputerInfo info = new Microsoft.VisualBasic.Devices.ComputerInfo(); if (pc != null) { //Console.WriteLine(String.Format("現在のCPU使用率は {0:f}% です。" + dtNow.ToString(), pc.NextValue())); //Console.WriteLine("物理メモリ使用量: {0}", p.WorkingSet64); //Console.WriteLine("仮想メモリ使用量: {0}", p.VirtualMemorySize64); File.AppendAllText(ConfigurationManager.AppSettings["key1"] + month + ".csv", String.Format(dtNow.ToString())); File.AppendAllText(ConfigurationManager.AppSettings["key1"] + month +".csv", String.Format(",{0:f}% ", pc.NextValue())); File.AppendAllText(ConfigurationManager.AppSettings["key1"] + month + ".csv", String.Format(",{0}", (p.WorkingSet64 / メモリ全体 * 100) + "%" + Environment.NewLine)); // File.AppendAllText(ConfigurationManager.AppSettings["key1"] + today + ".txt", String.Format(" 仮想メモリ使用量: {0}", p.VirtualMemorySize64) + Environment.NewLine); } } } }
実行結果(メモリ使用率部分は〇〇%に変更、ヘッダー部分は追加したい項目)
201904.csv
日時 CPU使用率 メモリ使用率
2019/4/25 10:03 0.00% 〇〇%
2019/4/25 10:04 19.72% 〇〇%
2019/4/25 10:05 13.48% 〇〇%
2019/4/25 10:06 25.88% 〇〇%
2019/4/25 10:07 22.83% 〇〇%
2019/4/25 10:08 25.26% 〇〇%
2019/4/25 10:09 26.53% 〇〇%
2019/4/25 10:10 18.44% 〇〇%
2019/4/25 10:11 20.40% 〇〇%
2019/4/25 10:12 21.41% 〇〇%
2019/4/25 10:13 22.12% 〇〇%
2019/4/25 10:14 29.45% 〇〇%
2019/4/25 10:15 29.66% 〇〇%
2019/4/25 10:16 21.03% 〇〇%
2019/4/25 10:17 21.06% 〇〇%
2019/4/25 10:18 21.02% 〇〇%
2019/4/25 10:19 17.41% 〇〇%
2019/4/25 10:20 18.85% 〇〇%
2019/4/25 10:21 22.40% 〇〇%
2019/4/25 10:22 17.55% 〇〇%
という風に実現したいと考えています。csvファイルはファイル名を年月にして
1つのcsvの中に1分毎の1行24時間の1か月分でまとめるようにしています。
説明で至らない部分があるかもしれませんが宜しくお願い致します。
やりたいこと
・メモリ全体の取得
・ヘッダーの追加
回答1件
あなたの回答
tips
プレビュー