Storage Performance Development Kit
tgt(32_CentOSでiSCSI環境構築)よりも良いパフォーマンスで動作します。
CentOS7
# sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config # systemctl status tgtd.service
# vi /etc/default/grub GRUB_CMDLINE_LINUX=の行末に追加 default_hugepagesz=1G hugepagesz=1G hugepages=4 保存後、grubに反映 # grub2-mkconfig -o /etc/grub2.cfg
# yum -y install numactl-devel openssl-devel git
再起動後、設定変更を確認
# grep ^Huge /proc/meminfo HugePages_Total: 4 HugePages_Free: 3 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 1048576 kB
# cd /usr/src # git clone https://github.com/spdk/spdk # cd spdk # git submodule update --init # scripts/pkgdep.sh # ./configure # make
RDMA(Remote Direct Memory Access)
リモート先のメモリにCPUを介さず読み書き可能な規格。
参考サイト
https://metonymical.hatenablog.com/entry/2018/07/22/094004
./configure --with-rdma
「All unit tests passed」表示でOK
./test/unit/unittest.sh ===================== All unit tests passed ===================== WARN: lcov not installed or SPDK built without coverage! WARN: neither valgrind nor ASAN is enabled!
# cd /usr/src/spdk/app/iscsi_tgt # vi iscsi.conf [global] ReactorMask 0x1 LogFacility "local7" [iSCSI] NodeBase "iqn.2016-06.io.spdk" AuthFile /usr/local/etc/spdk/auth.conf MinConnectionsPerCore 1 MinConnectionIdleInterval 5000 Timeout 30 DiscoveryAuthMethod Auto DefaultTime2Wait 2 DefaultTime2Retain 60 ImmediateData Yes ErrorRecoveryLevel 0 [Rpc] #AIO(Asynchronous I/O)が生成されなかったためRPCを有効化しています。 Enable Yes Listen 127.0.0.1 [AIO] #追加した200GBのHDDを指定しています。 AIO /dev/sdb1 AIO0 512 [PortalGroup1] #自身のIPアドレス or 0.0.0.0:3260でも大丈夫です。 Portal DA1 0.0.0.0:3260 [InitiatorGroup1] InitiatorName ANY #アクセス許可するNWアドレスを指定します。 Netmask 192.168.11.0/24 [TargetNode1] TargetName disk1 TargetAlias "Data Disk1" Mapping PortalGroup1 InitiatorGroup1 AuthMethod Auto AuthGroup AuthGroup1 UseDigest Auto #AIO0をLUN0としてTargetNodeを起動します。 LUN0 AIO0 QueueDepth 128
# ./iscsi_tgt -c iscsi.conf Starting SPDK v20.01-pre git sha1 f924c94 / DPDK 19.08.0 initialization... [ DPDK EAL parameters: iscsi --no-shconf -c 0x1 --log-level=lib.eal:6 --log-level=lib.cryptodev:5 --log-level=user1:6 --base-virtaddr=0x200000000000 --match-allocations --file-prefix=spdk_pid44396 ] app.c: 642:spdk_app_start: *NOTICE*: Total cores available: 1 reactor.c: 344:_spdk_reactor_run: *NOTICE*: Reactor started on core 0
OpneNebulaでVM作成して簡単にdbenchでベンチマーク
我が家の検証環境ではLVM, NFS に比べて、30%~40%ほどパフォーマンスが上がっていました。
ローカルディスクやHVでの結果にはさすがに及ばず。
vm Cent7 LVM Throughput 334.049 MB/sec 4 clients 4 procs max_latency=13.623 ms vm Cent7 NFS Throughput 389.693 MB/sec 4 clients 4 procs max_latency=11.988 ms vm Cent7 LVM(spdk) Throughput 479.421 MB/sec 4 clients 4 procs max_latency=12.321 ms vm Cent7 System(local disk) Throughput 655.964 MB/sec 4 clients 4 procs max_latency=9.218 ms HV Throughput 1471.72 MB/sec 4 clients 4 procs max_latency=1.655 ms