[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: transmission-daemon и постоянные обращения к диску



он плодит еще кучку потомков, для надежности запустил вот так:
strace -e open,write,close -o t-d.strace transmission-daemon \
	--config-dir=.config/transmission-daemon/ -ep \
	-e /var/log/transmission.log --log-error -f
выхлоп в аттаче. ничерта интересного. в лог пишет несчастную одну строчку.
шыштемд у меня нету, в syslog пару раз "closing session" выдал при остановке.

однако же, поигрался тут еще по-всякому и нашел вот какую вещь: если запустить
strace -p 5363,5364,5365,5385 -c &> stats
получаем примерно по одному fsync в секунду (см. файл stats)
далее, при логе в /var/log/transmission:
srv> ~$ strace -p 5363,5364,5365,5385 -e fsync -t
strace: Process 5363 attached
strace: Process 5364 attached
strace: Process 5365 attached
strace: Process 5385 attached
[pid  5363] 00:01:18 fsync(3)           = 0
[pid  5363] 00:01:20 fsync(3)           = 0
[pid  5363] 00:01:21 fsync(3)           = 0
[pid  5363] 00:01:22 fsync(3)           = 0
[pid  5363] 00:01:23 fsync(3)           = 0
[pid  5363] 00:01:24 fsync(3)           = 0
ну и так далее, каждую секунду он зовется и успешно синкает бедный диск. [1]
если же лог направить в /dev/null, общая картина та же, за исключением того,
что все эти fsync'и завершаются с ошибкой:
srv> ~$ strace -p 11226 -e fsync -t
strace: Process 11226 attached
00:09:30 fsync(3)                       = -1 EINVAL (Invalid argument)
00:09:31 fsync(3)                       = -1 EINVAL (Invalid argument)
00:09:32 fsync(3)                       = -1 EINVAL (Invalid argument)
00:09:33 fsync(3)                       = -1 EINVAL (Invalid argument)
00:09:34 fsync(3)                       = -1 EINVAL (Invalid argument)
00:09:35 fsync(3)                       = -1 EINVAL (Invalid argument)
вот она где собака порылась!
таким образом, имеем вот что: если лог-файл у нас на диске, то бешеная
программа каждую секунду упорно синкает этот самый диск! /dev/null тоже
пытается упорно синкать, но ему все равно))
видимо, где-то в коде, отвечающем за ведение логов, должно было быть что-то
типа: раз в секунду сбрасываем некий буфер (или как его правильно) в лог-файл и
синкаем диск, только из-за ошибки оно синкается независимо от того, писали мы в
файл или нет.


[1] http://man7.org/linux/man-pages/man2/fsync.2.html


2017-087 15:58 Tim Sattarov <stimur@gmail.com> wrote:
> я бы проверил ещё strace'ом, что он пишет и куда
> strace  -e write -p `pidof transmission-daemon`
> и вот сюда ещё:
> journalctl  -u transmission-daemon.service
> 
> у меня transmission-daemon из тестинга:
> 
> # apt-cache  policy transmission-daemon
> transmission-daemon:
>   Installed: 2.92-2
>   Candidate: 2.92-2
>   Version table:
>  *** 2.92-2 500
>         500 https://cloudfront.debian.net/debian unstable/main amd64
> Packages
>         400 https://cloudfront.debian.net/debian testing/main amd64 Packages
>         100 /var/lib/dpkg/status
> 
> 
> весь запуск и опции управляются через systemd:
> 
> [Unit]
> Description=Transmission BitTorrent Daemon
> After=network.target
> 
> [Service]
> User=debian-transmission
> Type=notify
> ExecStart=/usr/bin/transmission-daemon -f --log-error
> ExecStop=/bin/kill -s STOP $MAINPID
> ExecReload=/bin/kill -s HUP $MAINPID
> 
> [Install]
> WantedBy=multi-user.target
> 
> 

Attachment: t-d.strace
Description: Binary data

Attachment: stats
Description: Binary data


Reply to: