LinuxForum.Fans
Тема

transmission-daemon & nfs-kernel-server - проблема

Автор: GlebHappy 6 сообщений 1331 просмотров
01.03.2015 18:32 #416065

Добрый день и здравия всем знатокам :)

Имею в наличии неттоп DNS Porto (http://www.dns-shop.ru/catalog/i158232/kompyuter-dns-porto-amd-zacate-e450-hd6320-2gb-500gb-wi-fi-bt-hdmi-bez.html), на который установлен Debian
[console]glebhappy@debian-server:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie
[/console]

Далее, к данной шайтан-машине подключены две коробки CFI-B4043JDGG (http://www.cfi-rus.ru/cfib4043jdgg-text), каждая набита четыремя винтами (4 * 2 ТБ + 4 * 3 ТБ) соответственно, сконфигурированными как RAID5

Показать
[console]glebhappy@debian-server:~$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465,8G 0 disk
├─sda1 8:1 0 88,2G 0 part /
├─sda2 8:2 0 1K 0 part
├─sda3 8:3 0 27,8G 0 part
└─sda5 8:5 0 1,6G 0 part [SWAP]
sdb 8:16 0 8,2T 0 disk
└─sdb1 8:17 0 8,2T 0 part
└─VolumeGroup-storage 254:0 0 8,2T 0 lvm /storage
sdc 8:32 0 5,5T 0 disk
└─sdc1 8:33 0 5,5T 0 part /storage2
glebhappy@debian-server:~$ sudo lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 290e21c9-557f-4c34-bf87-8cd3834dab1d /
├─sda2
├─sda3 ext4 e0c2af3b-60b1-4f89-bfa6-a150802ff42d
└─sda5 swap 3cc4b47f-ff5a-401b-a08c-57ba64566831 [SWAP]
sdb
└─sdb1 LVM2_member SwtahI-zzjy-Om2R-qVHw-QY94-rMsl-2WxX1y
└─VolumeGroup-storage jfs 46e91da0-23be-4aec-a293-e579d605af59 /storage
sdc
└─sdc1 xfs 3b0267dd-b863-4d18-9e10-7ff581a823f0 /storage2
[/console]

Девайс используется для закачки торрентов и для их раздачи на медиаплеер посредством nfs.
Файлы настроек таковы:

"/etc/default/nfs-kernel-server"
[console]# Number of servers to start up
RPCNFSDCOUNT=8

# Runtime priority of server (see nice(1))
RPCNFSDPRIORITY=0

# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option. For more information,
# see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS
# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
RPCMOUNTDOPTS="--manage-gids"

# Do you want to start the svcgssd daemon? It is only required for Kerberos
# exports. Valid alternatives are "yes" and "no"; the default is "no".
NEED_SVCGSSD=""

# Options for rpc.svcgssd.
RPCSVCGSSDOPTS=""[/console]
"/etc/exports"
[console]# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#

/storage *(rw,async,no_subtree_check)
/storage2 *(rw,async,no_subtree_check)[/console]
"/var/lib/transmission-daemon/info/settings.json"
[console]{
"alt-speed-down": 5000,
"alt-speed-enabled": false,
"alt-speed-time-begin": 420,
"alt-speed-time-day": 127,
"alt-speed-time-enabled": false,
"alt-speed-time-end": 1410,
"alt-speed-up": 5000,
"bind-address-ipv4": "0.0.0.0",
"bind-address-ipv6": "::",
"blocklist-enabled": false,
"blocklist-url": "http://www.example.com/blocklist",
"cache-size-mb": 128,
"dht-enabled": true,
"download-dir": "/storage",
"download-queue-enabled": true,
"download-queue-size": 10,
"encryption": 1,
"idle-seeding-limit": 30,
"idle-seeding-limit-enabled": false,
"incomplete-dir": "/home/debian-transmission/Downloads",
"incomplete-dir-enabled": false,
"lpd-enabled": true,
"message-level": 1,
"peer-congestion-algorithm": "",
"peer-id-ttl-hours": 6,
"peer-limit-global": 200,
"peer-limit-per-torrent": 50,
"peer-port": 54975,
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,
"peer-port-random-on-start": true,
"peer-socket-tos": "default",
"pex-enabled": true,
"port-forwarding-enabled": true,
"preallocation": 1,
"prefetch-enabled": 1,
"queue-stalled-enabled": true,
"queue-stalled-minutes": 30,
"ratio-limit": 2,
"ratio-limit-enabled": true,
"rename-partial-files": true,
"rpc-authentication-required": false,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "{3d5da7a6b23049437d1a1415b185e71cbba11d25nwn0fLoU",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "",
"rpc-whitelist": "127.0.0.1",
"rpc-whitelist-enabled": false,
"scrape-paused-torrents-enabled": true,
"script-torrent-done-enabled": false,
"script-torrent-done-filename": "",
"seed-queue-enabled": false,
"seed-queue-size": 10,
"speed-limit-down": 100,
"speed-limit-down-enabled": false,
"speed-limit-up": 100,
"speed-limit-up-enabled": false,
"start-added-torrents": true,
"trash-original-torrent-files": false,
"umask": 18,
"upload-slots-per-torrent": 14,
"utp-enabled": true
}
[/console]

В чем состоит проблема:
Раньше у меня был провайдер, который мог мне предоставлять максимум 4 мегабита входящей скорости и 0,8 мегабита исходящей. При этом всё было нормально, могло всё работать параллельно - трансмишн качал, плеер показывал.
Сейчас я поменял прова и скорость у меня теперь 50/50 мегабит вниз/вверх (внутри сети - ещё больше до 100).
И с этого момента начались проблемы с воспроизведением тяжелых файлов (рипы >20 гигабайт и образы BD).
В чём выражается - когда идет интенсивная скачка, регулярно происходят фризы, которые портят весь просмотр.
Если закачки приостановить - то всё более-менее ровно. Но хотелось бы поправить.

До чего додумался сам:
Увеличил размер кэша для transmission, благо оперативка позволяет
[console]"cache-size-mb": 128,[/console]

Проблема стала проявляться реже, но полностью не ушла.
Что можно сделать ещё? Хотелось бы как-то расставить приоритеты на ввод/вывод, чтобы доступ к диску всегда первоочередно получал NFS, а transmission - уже во вторую очередь.

01.03.2015 18:57 #416067
"GlebHappy" написал:
Хотелось бы как-то расставить приоритеты на ввод/вывод

man ionice

01.03.2015 20:10 · отредактировано #416074
drBatty написал:
[quote="GlebHappy"]Хотелось бы как-то расставить приоритеты на ввод/вывод

man ionice[/quote]

Спасибо большое, посмотрел.
Долго соображал, как это сделать для transmission-daemon, но нагуглил, что эта настройка делается через systemd.

"/lib/systemd/system/transmisssion-daemon.service"
[console][Unit]
Description=Transmission BitTorrent Daemon
After=network.target

[Service]
User=debian-transmission
IOSchedulingClass=best-effort
IOSchedulingPriority=7

Type=notify
ExecStart=/usr/bin/transmission-daemon -f --log-error
ExecReload=/bin/kill -s HUP $MAINPID

[Install]
WantedBy=multi-user.target[/console]

Судя по тому, что выводит htop - всё получилось, приоритет для transmission-daemon установлен

"htop"
[console]
glebhappy@debian-server:~$ htop

0 [||||||||||||| 39.8%] Tasks: 34, 5 thr, 102 kthr; 2 running
1 [|||||||| 22.4%] Load average: 2.21 2.27 2.12
Mem[||||||||||||||||||||403/1621MB] Uptime: 16 days, 03:21:30
Swp[| 48/1640MB]

PID USER PRI NI IO S CPU% MEM% TIME+ Command
3220 debian-tr 30 10 B7 S 49.4 18.7 26:28.75 /usr/bin/transmission-daemon -f
3223 debian-tr 30 10 B7 S 0.0 18.7 0:04.60 /usr/bin/transmission-daemon -f
3221 debian-tr 30 10 B7 R 50.6 18.7 26:21.89 /usr/bin/transmission-daemon -f
[/console]

Но возникает вторая часть вопроса. А как установить ionice для процессов nfsd? В конфиге ничего такого подходящего не нашел.

01.03.2015 23:29 #416110
"GlebHappy" написал:
А как установить ionice для процессов nfsd? В конфиге ничего такого подходящего не нашел.

во первых
man 8 nfsiostat для статистики

во вторых, nfsd — модуль ядра, я посмотрел конфиг (man 5 nfs, man 5 nfsmount.conf) там про renice ничего не написано, но вы всё равно почитайте, там много про кеширование.

AFAIK nfs и так получает самый большой приоритет i/o, т.ч. регулировать его не нужно ИМХО, достаточно подрезать transmission.

"GlebHappy" написал:
эта настройка делается через systemd.

понятное дело, сейчас всё делается через этот долбанный systemd…

01.03.2015 23:41 #416112
drBatty написал:
[quote="GlebHappy"]А как установить ionice для процессов nfsd? В конфиге ничего такого подходящего не нашел.

во первых
man 8 nfsiostat для статистики[/quote]

Спасибо, но вроде как nfsstat, судя по описанию, запускается на стороне клиента? А клиентом у меня выступает некое устройство (Dune Lite 53D - http://dune-hd.com/rus/products/full_hd_media_players/13), которое умеет монтировать nfs, но вот запустить там что-то нештатное вряд ли возможно нетривиальными способами.


во вторых, nfsd — модуль ядра, я посмотрел конфиг (man 5 nfs, man 5 nfsmount.conf) там про renice ничего не написано, но вы всё равно почитайте, там много про кеширование.

AFAIK nfs и так получает самый большой приоритет i/o, т.ч. регулировать его не нужно ИМХО, достаточно подрезать transmission.

Тут я немного запутался. htop выдает вот такое:

Показать
[console]
glebhappy@debian-server:~$ htop

0 [||||| 13.5%] Tasks: 39, 5 thr, 102 kthr; 1 running
1 [|| 3.3%] Load average: 3.61 3.78 4.17
Mem[||||||||||||||||||||551/1621MB] Uptime: 16 days, 06:50:47
Swp[| 48/1640MB]

PID USER PRI NI IO S CPU% MEM% TIME+ Command
3082 root 20 0 B4 S 0.0 0.0 0:14.50 ├─ nfsd
3081 root 20 0 B4 S 0.0 0.0 0:10.87 ├─ nfsd
3080 root 20 0 B4 S 0.0 0.0 0:16.21 ├─ nfsd
3079 root 20 0 B4 S 0.0 0.0 0:20.17 ├─ nfsd
3078 root 20 0 B4 S 0.0 0.0 0:09.15 ├─ nfsd
3077 root 20 0 B4 S 0.0 0.0 0:18.91 ├─ nfsd
3076 root 20 0 B4 S 0.0 0.0 0:13.62 ├─ nfsd
3075 root 20 0 B4 S 0.0 0.0 0:18.17 ├─ nfsd
3073 root 0 -20 B0 S 0.0 0.0 0:00.00 ├─ nfsd4_callbacks
3072 root 0 -20 B0 S 0.0 0.0 0:00.00 ├─ nfsd4
607 root 0 -20 B0 S 0.0 0.0 0:00.00 ├─ nfsiod
[/console]

Т.е. всё-таки приоритет у процессов nfsd - не максимальный.

И попутно вопрос - раз пошла такая пьянка ( O:) ), то для случая максимум одного клиента, как у меня, можно снизить количество процессов nfsd до одного? Или даже при единственном клиенте будут использоваться несколько?

01.03.2015 23:57 #416114
"GlebHappy" написал:
Т.е. всё-таки приоритет у процессов nfsd - не максимальный.

я давно не трогал NFS, не в курсе. Но вроде-бы у меня приоритета хватало всегда.

"GlebHappy" написал:
то для случая максимум одного клиента, как у меня, можно снизить количество процессов nfsd до одного? Или даже при единственном клиенте будут использоваться несколько?

это в опциях монтирования что-то такое было, если я правильно путаю. Man nfs который.

Войдите или зарегистрируйтесь, чтобы ответить.