我最近尝试过Sysdig参与一个项目。
我的主要目标是从内核中捕获系统调用,而Sysdig似乎是一个不错的选择。实际上,我已经用不同的技术做了一些测试,并比较了每个测试的开销 我带着一个简单的测试来到这里:一个C程序,只需打开,写入然后关闭一个文件100000次。
onOptionsItemSelected
我在没有监督的情况下进行了5次测试,平均持续时间是:
我用小型LKM和kprobes进行了其他5次测试。完成相同的测试需要大约3秒钟。
此时,一切似乎都正常,但是当我使用Sysdig运行测试时:
#include "stdio.h"
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>
int main(void)
{
int i;
char puffer[100];
FILE * handle;
for (i=0; i<100000; i++) {
strcpy (puffer, "Sysdig c'est trop fort !\n");
handle = fopen("test.txt", "w");
fputs(puffer, handle);
fgets(puffer, 80, handle);
fclose(handle);
}
return 0;
}
sudo sysdig proc.name="ctest" > ctestlog
是我的C程序,我平均得到了这些结果:
因此,这次测试的结果是Sysdig将我的过程提高了两倍 我确切地说,与我的测试的标准偏差小于1秒。
有人已经看过类似的东西或有解释吗? 由于Sysdig的工作,它可以与linux任务调度程序相关吗?