Столкнулись с проблемой, что периодически подвисает система Linux.
Есть программа, довольно сложный продукт, которая для своей работы создает порядка 260 «тредов». Во время работы данного софта обнаружили, что он периодически подвисает 3-5 секунд. За 10 минут работы, таких подвисаний может быть 6-8.
Первые предположения были, что подглючивает сама софтина и решили уронить ее в дамп во время подвисания, ну и соответственно далее изучить дамп и все такое... Сделали тулзовину, которая 2 раза в секунду опрашивает данную софтину и если она не отвечает в течении 2 секунд, раняет ее в дамп. Оказалась, что во время подвисания, виснит и сама тестовая тулзовина. Назначали ей RealTime приоритет (политика: SCHED_FIFO, приоритет 50), т.е. приоритет выше чем у внутренних потоков ядра. И все равно тулзовина во время этих 3-5 секундных подвисаний не получает время для работы.
Виснит полностью вся система. Складывается впечатление, что scheduler вообще никому не дает CPU для работы...
Залогировали список системных вызовов которые делает исследуемый софт:
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
97.48 56418.270831 117 4993295 147009 futex
0.77 445.035345 23422913 19 19 rt_sigsuspend
0.76 439.691892 665 661688 select
0.43 247.266351 62710 3943 recvfrom
0.42 243.651252 45466 5359 recv
0.04 22.876741 8295 2758 15 ioctl
0.04 20.691496 32432 638 fsync
0.02 14.450080 578003 25 25 rt_sigreturn
0.02 11.988313 4 2950716 gettimeofday
0.01 4.325112 21 201386 clock_gettime
0.00 2.811146 4 680297 read
0.00 2.694780 42 64393 write
0.00 0.409938 14641 28 creat
0.00 0.358971 16317 22 statfs
0.00 0.305992 78 3943 sendto
0.00 0.126784 23 5411 send
0.00 0.121982 121982 1 mlockall
0.00 0.061515 1 55759 154 open
0.00 0.043443 1 55633 close
0.00 0.030690 55 558 mmap2
0.00 0.030086 971 31 unlink
...
Может кто сталкивался с подобной проблемой? Поскажите, куда следует начинать копать?
p.s. kernel: vanilla linux-2.6.33.7 + patch-2.6.33.7-rt29