1

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

Имею в наличии неттоп DNS Porto (http://www.dns-shop.ru/catalog/i158232/ … i-bez.html), на который установлен Debian

 Консоль:
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

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

+ открыть спойлер

 Консоль:
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

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

+ /etc/default/nfs-kernel-server

 Консоль:
# 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=""

+ /etc/exports

 Консоль:
# /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)

+ /var/lib/transmission-daemon/info/settings.json

 Консоль:
{
    "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
}

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

До чего додумался сам:
Увеличил размер кэша для transmission, благо оперативка позволяет

 Консоль:
"cache-size-mb": 128,

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

2

GlebHappy пишет:

Хотелось бы как-то расставить приоритеты на ввод/вывод

man ionice

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

3 (01.03.2015 21:29:12 отредактировано GlebHappy)

drBatty пишет:
GlebHappy пишет:

Хотелось бы как-то расставить приоритеты на ввод/вывод

man ionice

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

+ /lib/systemd/system/transmisssion-daemon.service

 Консоль:
[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

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

+ htop

 Консоль:

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

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

4

GlebHappy пишет:

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

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

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

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

GlebHappy пишет:

эта настройка делается через systemd.

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

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

5

drBatty пишет:
GlebHappy пишет:

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

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

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

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

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

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

+ открыть спойлер

 Консоль:

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

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

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

6

GlebHappy пишет:

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

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

GlebHappy пишет:

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

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

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)