Я профилирую свой код для системных вызовов, используя strace
. Я нашел некоторые удивительные результаты. Трассировка показывает 47254 однобайтовых записей в файловый дескриптор 5 при передаче по сети 200 МБ данных.
write(5, "\1", 1)
Что означает эта запись? Что такое FD 5? Откуда это может происходить? Есть ли способ узнать?
Я не очень хорошо разбираюсь в Linux основах.
Вывод ls -lrt /proc/24393/fd
lrwx------ 1 95th 95th 64 Mar 1 20:56 9 -> 'socket:[97676]'
lr-x------ 1 95th 95th 64 Mar 1 20:56 7 -> /dev/random
lr-x------ 1 95th 95th 64 Mar 1 20:56 6 -> /dev/urandom
l-wx------ 1 95th 95th 64 Mar 1 20:56 5 -> 'pipe:[98345]'
lr-x------ 1 95th 95th 64 Mar 1 20:56 4 -> 'pipe:[98345]'
lrwx------ 1 95th 95th 64 Mar 1 20:56 3 -> 'anon_inode:[eventpoll]'
lrwx------ 1 95th 95th 64 Mar 1 20:56 2 -> /dev/pts/0
lrwx------ 1 95th 95th 64 Mar 1 20:56 1 -> /dev/pts/0
lrwx------ 1 95th 95th 64 Mar 1 20:56 0 -> /dev/pts/0
Я проверил, что это труба (хотя это не очень помогло):
/proc/24393/fd$ lsof | grep 98345
btrs 24393 95th 4r FIFO 0,11 0t0 98345 pipe
btrs 24393 95th 5w FIFO 0,11 0t0 98345 pipe
tokio-run 24393 24394 95th 4r FIFO 0,11 0t0 98345 pipe
tokio-run 24393 24394 95th 5w FIFO 0,11 0t0 98345 pipe
tokio-run 24393 24395 95th 4r FIFO 0,11 0t0 98345 pipe
tokio-run 24393 24395 95th 5w FIFO 0,11 0t0 98345 pipe