Странное улучшение времени процесса при наблюдении с помощью sysdig

Я недавно попробовал Sysdig для проекта.

Моя главная цель - ловить системные вызовы из ядра, и Sysdig кажется хорошим вариантом. На самом деле, я провел несколько тестов с разными методами и сравнил накладные расходы для каждого из них.
Я пришел сюда с простым тестом: программа на C, которая просто открывается, пишет, а затем закрывает файл 100000 раз.

#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;
}

Я провел 5 тестов без присмотра, и средняя продолжительность:

  • реальный: 30,29с
  • Пользователь:1,068
  • SYS:13.098

Я провел 5 других тестов с маленьким LKM с помощью kprobes. Потребовалось еще около 3 секунд, чтобы завершить тот же тест.

На данный момент все кажется нормальным, но когда я запускал тесты с Sysdig:

sudo sysdig proc.name="ctest" > ctestlog

куда ctest моя C программа, у меня были такие результаты в среднем:

  • реальный: 17,1108
  • пользователь: 0,6336
  • sys: 7,3752

Таким образом, в результате этих тестов Sysdig улучшил мой процесс в два раза.
Я уточняю, что стандартное отклонение от моих тестов составляет менее 1 секунды.

Кто-то уже видел что-то подобное или есть объяснение?
Может ли это быть связано с планировщиком задач linux из-за задания Sysdig?

0 ответов

Другие вопросы по тегам