PerformanceCounter cpuload = new PerformanceCounter();
cpuload.CategoryName = "Processor";
cpuload.CounterName = "% Processor Time";
cpuload.InstanceName = "_Total";
Console.WriteLine(cpuload.NextValue() + "%");
Run Code Online (Sandbox Code Playgroud)
输出总是0%,而cpuload.RawValue像是736861484375左右,发生了NextValue()什么?
我需要"perf"实用程序来监控我的Mac上的程序.我知道linux附带了它,但它可以在Mac上使用吗?
我正在研究OSX 10.9 Mavericks并尝试使用perf或linux工具进行"端口搜索",但我无法获得任何结果.
我正在使用一个名为i.MX515的基于ARM Cortex-A8的处理器.有Linux Ubuntu 9.10发行版.我正在运行一个用C编写的非常大的应用程序,我正在利用gettimeofday();函数来衡量我的应用程序所需的时间.
main()
{
gettimeofday(start);
....
....
....
gettimeofday(end);
}
Run Code Online (Sandbox Code Playgroud)
这个方法足以让我看看我的应用程序块占用了多少时间.但是,现在,我正在尝试使用gettimeofday()计算时间的方法彻底优化我的代码,我看到连续运行之间有很多波动(在我的优化之前和之后运行),所以我不能确定实际执行时间,从而影响我的改进.
谁能告诉我应该怎么做?
如果通过访问循环计数器(在ARM网站上为Cortex-M3建议的想法),任何人都可以向我指出一些代码,它给出了我在Cortex-A8上访问定时器寄存器时必须遵循的步骤吗?
如果这种方法不是很准确,那么请提出一些替代方案.
谢谢
跟进1:在Code Sorcery上编写了以下程序,生成了可执行文件,当我尝试在主板上运行时,我得到了 - 非法指令消息:(
static inline unsigned int get_cyclecount (void)
{
unsigned int value;
// Read CCNT Register
asm volatile ("MRC p15, 0, %0, c9, c13, 0\t\n": "=r"(value));
return value;
}
static inline void init_perfcounters (int32_t do_reset, int32_t enable_divider)
{
// in general enable all counters (including cycle counter)
int32_t value = 1;
// …Run Code Online (Sandbox Code Playgroud) 在perfmon for ASP.NET中有大量的计数器可用.什么是最好的(我想选择5-10),这将是我们测试环境中最好的监控,以便我们可以反馈给开发人员.
我在考虑请求时间,请求队列长度,活动会话等.
如何使用System.Diagnostics.PerformanceCounter跟踪进程的内存和CPU使用情况?
OSX Mountain Lion不再支持允许您配置自定义性能计数器的Shark,因为它无法运行32位内核.Instruments.app,Apple替代Shark,似乎不支持阅读性能计数器,如L1缓存命中/未命中**.无论如何在OS X上实际设置和读取性能计数器?即使没有应用程序,是否有一些用户土地API来执行此操作?
**Instruments.app似乎有一个性能计数器接口,但在我的Retina MacBook Pro上,PM Events窗口没有列出任何事件,并指示"Device:Unknown".仪器还有其他替代品吗?
我正在跟踪同一个应用程序的多个实例,需要获取两个进程的内存和CPU使用.但是,我似乎无法找到一种方法来使用性能计数器,并知道哪个结果是针对哪个进程的.我已经看到我可以将#1等附加到名称的末尾以获得每个的结果,但这并不能告诉我哪个是哪个进程.
如何确定ProcessId或将进程ID传递给计数器以获得具有相同名称的每个进程的结果?
PerformanceCounterCPU.CategoryName = "Process";
PerformanceCounterCPU.CounterName = "% Processor Time";
PerformanceCounterCPU.InstanceName = proc.ProcessHandle.ProcessName;
PerformanceCounterMemory.CategoryName = "Process";
PerformanceCounterMemory.CounterName = "Working Set - Private";
PerformanceCounterMemory.InstanceName = proc.ProcessHandle.ProcessName;
Run Code Online (Sandbox Code Playgroud) 我有一个自定义的性能计数器类别.Visual Studio Server Explorer拒绝删除它,声称它"未注册或系统类别".如果没有以编程方式进行,我该如何删除该类别?我可以删除一个注册表项吗?
我已经创建了一个PerformanceCounterCategory,如下所示
var category = PerformanceCounterCategory.Create("MyCat", "Cat Help",
PerformanceCounterCategoryType.SingleInstance, "MyCounter", "Counter Help);
Run Code Online (Sandbox Code Playgroud)
如何在类别中添加新计数器以监控其他项目?
我找不到它的api.
当我执行以下程序并查看性能计数器时,结果对我来说没有意义.平均值为零,当我期望~0.1或~100时,最小/最大值为~0.4.
我的问题是什么?
码
class Program
{
const string CategoryName = "____Test Category";
const string CounterName = "Average Operation Time";
const string BaseCounterName = "Average Operation Time Base";
static void Main(string[] args)
{
if (PerformanceCounterCategory.Exists(CategoryName))
PerformanceCounterCategory.Delete(CategoryName);
var counterDataCollection = new CounterCreationDataCollection();
var avgOpTimeCounter = new CounterCreationData()
{
CounterName = CounterName,
CounterHelp = "Average Operation Time Help",
CounterType = PerformanceCounterType.AverageTimer32
};
counterDataCollection.Add(avgOpTimeCounter);
var avgOpTimeBaseCounter = new CounterCreationData()
{
CounterName = BaseCounterName,
CounterHelp = "Average Operation Time Base Help",
CounterType = PerformanceCounterType.AverageBase
}; …Run Code Online (Sandbox Code Playgroud)