使用sysdig进行监督时,处理时间有了很大的改进

时间:2016-06-08 09:40:10

标签: c linux system-calls strace sysdig

我最近尝试过Sysdig参与一个项目。

我的主要目标是从内核中捕获系统调用,而Sysdig似乎是一个不错的选择。实际上,我已经用不同的技术做了一些测试,并比较了每个测试的开销 我带着一个简单的测试来到这里:一个C程序,只需打开,写入然后关闭一个文件100000次。

onOptionsItemSelected

我在没有监督的情况下进行了5次测试,平均持续时间是:

  • 真实:30,29s
  • 用户:1.068
  • SYS:13.098

我用小型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程序,我平均得到了这些结果:

  • real:17,1108
  • 用户:0,6336
  • sys:7,3752

因此,这次测试的结果是Sysdig将我的过程提高了两倍 我确切地说,与我的测试的标准偏差小于1秒。

有人已经看过类似的东西或有解释吗? 由于Sysdig的工作,它可以与linux任务调度程序相关吗?

0 个答案:

没有答案