Встала задача поднять производительность нашей полки (iSCSI).
У нас сейчас имеется DS3512, RAID6 из 8 SATA дисков и RAID10 из 4 15K. Три сервера, воткнуты по двум разным путям (через два свитча) в полку. С полки выведены все каналы контроллеров, с серверов в свитчи воткнуты по два порта.
[*] Настроен multipath.
[*] Jumbo-фреймы везде включены, flow control выключен
[*] scheduler везде - deadline.
[*] Свитчи - Cisco 2960S
Итог: все работает, multipath завелся, но вот производительность линейного чтения оставляет желать лучшего (понимаю, что не бенчмарк ни разу - но тот же hdparm на незанятом другим i/o LUN-е через multipath выдает менее 100 MB/s).
При этом, на тех же дисках не через multipath - упираемся в гигабит (что естественно).
Что можно посмотреть?
multipath.conf:
Код: Выделить всё
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
}
defaults {
selector "round-robin 0"
polling_interval 2
path_grouping_policy group_by_prio
failback immediate
user_friendly_names yes
path_grouping_policy group_by_prio
path_checker rdac
prio_callout rdac
}
devices {
device {
vendor "IBM"
product "1746"
getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
features "2 pg_init_retries 50"
hardware_handler "1 rdac"
path_selector "round-robin 0"
path_grouping_policy group_by_prio
failback immediate
rr_weight uniform
no_path_retry queue
rr_min_io 50 # тут до недавнего времени было 1000, после того как поставил для пробы 50 - линейное даже упало, IOPS не мерил пока
path_checker rdac
prio rdac
prio_args ""
}
}
multipaths {
multipath {
wwid 360080e50001be7340000028e4f1f750d
alias mp_ds3512
}
multipath {
wwid 360080e50001be7340000247c52d4a0dd
alias mp_ds3512_emgrid_redo
}
}
Код: Выделить всё
node.startup = automatic
node.session.timeo.replacement_timeout = 120
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 5
node.session.err_timeo.abort_timeout = 15
node.session.err_timeo.lu_reset_timeout = 20
node.session.initial_login_retry_max = 8
node.session.cmds_max = 128
node.session.queue_depth = 32
node.session.iscsi.InitialR2T = Yes
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 65536
node.session.iscsi.MaxBurstLength = 262144
node.conn[0].iscsi.MaxRecvDataSegmentLength = 8192
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 8192
node.conn[0].iscsi.HeaderDigest = None
node.conn[0].iscsi.DataDigest = None
node.session.iscsi.FastAbort = Yes