【发布时间】:2023-03-10 10:13:01
【问题描述】:
我正在尝试了解和使用现有的实用程序或可编程的 sn-ps,它们可以根据功耗、内核空间中函数的 CPU 周期来测量 CPU 利用率/性能。
我有两个函数 sn-ps 做同样的工作:
将 IP 地址转换为字符串。
char* inet_ntoa(struct in_addr in, char* buf, size_t* rlen)
{
int i;
char* bp;
bp = buf;
for (i = 0;i < 4; i++ ) {
unsigned int o, n;
o = ((unsigned char*)&in)[i];
n = o;
if ( n >= 200 ) {
*bp++ = '2';
n -= 200;
}else if ( n >= 100 ) {
*bp++ = '1';
n -= 100;
}
if ( o >= 10 ) {
int i;
for ( i = 0; n >= 10; i++ ) {
n -= 10;
}
*bp++ = i + '0';
}
*bp++ = n + '0';
*bp++ = '.';
}
*--bp = 0;
if ( rlen ) {
*rlen = bp - buf;
}
return buf;
}
与
char *inet_ntoa (struct in_addr in)
{
unsigned char *bytes = (unsigned char *) ∈
__snprintf (buffer, sizeof (buffer), "%d.%d.%d.%d",
bytes[0], bytes[1], bytes[2], bytes[3]);
return buffer;
}
后面的函数来自glibc。前一个是我自己的。
这两个函数将在内核空间中调用。 我如何衡量那里的性能以进行比较。
我的机器是 Ubuntu 14.04 x86 i686。 Linux 内核 3.13
我从源 linux/tools 安装了 perf。
我的模块正在运行。如何挂钩 perf 来衡量我的功能性能。
请多多指教。
【问题讨论】:
-
为此使用
perf工具。就像在下面提到的答案中一样。
标签: c linux performance linux-kernel perf