Я настраивал массив raid1 и настроил зашифрованный носитель с помощью cryptsetup с параметрами по умолчанию. Предполагается, что массивы raid используют 2 диска, но на данный момент у меня есть только 1 диск в каждом массиве raid1, чтобы сравнить их производительность.
dd if=/dev/zero of=/media/storage/Temp/test.img bs=100M count=10
10+0 records in
10+0 records out
1048576000 bytes (1.0 GB) copied, 7.35153 s, 143 MB/s
Верхний выход:
top - 10:30:02 up 2 days, 19:18, 2 users, load average: 0.00, 0.16, 0.72
Tasks: 147 total, 3 running, 144 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 21.4 sy, 0.0 ni, 75.0 id, 0.9 wa, 0.0 hi, 2.7 si, 0.0 st
KiB Mem: 4044256 total, 1135880 used, 2908376 free, 224624 buffers
KiB Swap: 7812496 total, 123488 used, 7689008 free, 470796 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11591 root 20 0 109m 100m 572 R 98.5 2.5 0:03.12 dd
11592 root 20 0 0 0 0 R 98.5 0.0 0:00.24 flush-9:1
203 root 20 0 0 0 0 S 52.1 0.0 0:15.59 md1_raid1
Здесь все кажется ожидаемым
hdparm -t /dev/md1
/dev/md1:
Timing buffered disk reads: 574 MB in 3.01 seconds = 190.95 MB/sec
dd if=/dev/zero of=/dev/mapper/galerkin_storage bs=100M count=100
100+0 records in
100+0 records out
10485760000 bytes (10 GB) copied, 209.058 s, 50.2 MB/s
Верхний выход:
top - 10:12:20 up 2 days, 19:00, 2 users, load average: 5.65, 2.92, 1.60
Tasks: 149 total, 6 running, 143 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 21.4 sy, 0.0 ni, 74.9 id, 0.9 wa, 0.0 hi, 2.7 si, 0.0 st
KiB Mem: 4044256 total, 3749816 used, 294440 free, 3155712 buffers
KiB Swap: 7812496 total, 132464 used, 7680032 free, 40892 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10940 root 20 0 0 0 0 R 99.0 0.0 1:49.99 kworker/2:1
11538 root 20 0 0 0 0 R 94.5 0.0 1:28.32 kworker/3:1
11486 root 20 0 0 0 0 R 63.0 0.0 2:13.37 kworker/1:2
11489 root 20 0 0 0 0 R 27.0 0.0 0:52.80 flush-253:0
10910 root 20 0 0 0 0 R 22.5 0.0 2:06.59 kworker/0:2
1305 root 20 0 0 0 0 S 18.0 0.0 338:40.46 md3_raid1
11490 root 20 0 0 0 0 S 13.5 0.0 1:31.37 kworker/0:1
11539 root 20 0 109m 100m 572 D 13.5 2.5 0:23.25 dd
hdparm -t /dev/mapper/galerkin_storage
/dev/mapper/galerkin_storage:
Timing buffered disk reads: 84 MB in 3.03 seconds = 27.73 MB/sec
используя dd
dd if=/dev/mapper/galerkin_storage of=/dev/null bs=100M count=100
100+0 records in
100+0 records out
10485760000 bytes (10 GB) copied, 369.272 s, 28.4 MB/s
верхний выход
top - 10:29:49 up 3 days, 19:18, 2 users, load average: 2.14, 2.69, 1.69
Tasks: 148 total, 2 running, 146 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 15.8 sy, 0.0 ni, 81.4 id, 0.8 wa, 0.0 hi, 2.0 si, 0.0 st
KiB Mem: 4044256 total, 1586852 used, 2457404 free, 1070080 buffers
KiB Swap: 7812496 total, 115916 used, 7696580 free, 67056 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
13963 root 20 0 0 0 0 R 84.9 0.0 3:55.93 kworker/2:0
13773 root 20 0 0 0 0 S 30.3 0.0 2:38.38 kworker/3:2
14158 root 20 0 109m 100m 572 D 18.2 2.5 0:08.50 dd
14170 robert 20 0 23168 1448 1076 R 6.1 0.0 0:00.02 top
1 root 20 0 10648 708 704 S 0.0 0.0 0:05.26 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.17 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 1:05.31 ksoftirqd/0
5 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u:0
6 root rt 0 0 0 0 S 0.0 0.0 0:00.14 migration/0
Производительность записи, похоже, ограничена производительностью моего процессора, так как в верхней части указано, что kworker использует процессор на 60-98%. Я могу согласиться с тем, что мой двухъядерный Intel Atom создан для повышения производительности. Что меня удивляет, так это то, что производительность чтения (1) меньше, чем производительность записи, и (2), похоже, не ограничивается производительностью процессора.
Я считаю, что производительность чтения должна быть примерно равна производительности записи? Должен ли я просто обновиться до последней версии debian и не заниматься археологией? Версия cryptsetup, которую я использую (1.4.3) для чтения, не так многопоточна, как запись? Кажется, что запись использует 4 разных потока, а запись использует 4?
Я посмотрел на вопрос Очень низкая производительность в комбинации LUKS / LVM / RAID под Debian Squeeze но у меня, похоже, нет такой же проблемы, поскольку мой верхний вывод отображает 4 процесса для kryptd, что говорит о том, что моя cryptsetup действительно многопоточна.
На данный момент массивы raid1 включают только 1 диск, потому что я хотел сравнить их друг с другом. luksDump моего зашифрованного носителя
LUKS header information for /dev/md3
Version: 1
Cipher name: aes
Cipher mode: cbc-essiv:sha256
Hash spec: sha1
Payload offset: 4096
MK bits: 256
MK digest:
MK salt:
MK iterations: 12250
UUID: 022e94a0-9dce-45c1-806b-9fb54cfabf9b
Key Slot 0: ENABLED
Iterations: 49360
Salt:
Key material offset: 8
AF stripes: 4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
ядро
uname -ra
Linux galerkin 3.2.0-4-amd64 #1 SMP Debian 3.2.73-2+deb7u2 x86_64 GNU/Linux
Версия Debian
cat /etc/debian_version
7.9
Версия Cryptsetup
cryptsetup --version
cryptsetup 1.4.3
Зашифрованный массив был настроен с помощью
cryptsetup -v luksFormat /dev/md3 --key-file=/root/key-file
Массив рейдов был настроен с помощью
mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sda4 missing
Cpuinfo
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU D525 @ 1.80GHz
stepping : 10
microcode : 0x107
cpu MHz : 1800.136
cache size : 512 KB
ЦП указан как 4 из вышеперечисленных.
Изменить: в заголовке указана неправильная версия. Правильно - 7,9 (хрипы).
Изменить: обновлено до cryptsetup 1.6.6
cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1 204800 iterations per second
PBKDF2-sha256 151703 iterations per second
PBKDF2-sha512 79824 iterations per second
PBKDF2-ripemd160 169562 iterations per second
PBKDF2-whirlpool 30913 iterations per second
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 39.5 MiB/s 43.5 MiB/s
serpent-cbc 128b 29.3 MiB/s 32.0 MiB/s
twofish-cbc 128b 34.0 MiB/s 46.4 MiB/s
aes-cbc 256b 30.6 MiB/s 32.8 MiB/s
serpent-cbc 256b 29.8 MiB/s 32.0 MiB/s
twofish-cbc 256b 34.4 MiB/s 46.5 MiB/s
aes-xts 256b 43.0 MiB/s 44.2 MiB/s
serpent-xts 256b 31.5 MiB/s 32.3 MiB/s
twofish-xts 256b 33.1 MiB/s 34.2 MiB/s
aes-xts 512b 32.7 MiB/s 33.2 MiB/s
serpent-xts 512b 31.8 MiB/s 32.3 MiB/s
twofish-xts 512b 33.4 MiB/s 34.1 MiB/s
dd if=/dev/zero of=/dev/mapper/galerkin_storage bs=100M count=100
100+0 records in
100+0 records out
10485760000 bytes (10 GB) copied, 207.493 s, 50.5 MB/s
верхняя запись во время записи
top - 21:42:48 up 22 min, 2 users, load average: 2.96, 1.07, 0.69
Tasks: 142 total, 7 running, 135 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 12.6 sy, 0.0 ni, 82.6 id, 4.2 wa, 0.0 hi, 0.4 si, 0.0 st
KiB Mem: 4044256 total, 3252544 used, 791712 free, 2721776 buffers
KiB Swap: 7812496 total, 44 used, 7812452 free, 65520 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4379 root 20 0 0 0 0 R 93.5 0.0 0:24.72 kworker/1:2
4377 root 20 0 0 0 0 R 82.5 0.0 0:03.55 kworker/2:0
4378 root 20 0 0 0 0 R 82.5 0.0 0:31.93 kworker/3:1
4336 root 20 0 0 0 0 R 55.0 0.0 0:33.53 kworker/0:0
189 root 20 0 0 0 0 S 44.0 0.0 0:13.94 md3_raid1
4380 root 20 0 105m 100m 540 R 11.0 2.5 0:09.26 dd
4396 robert 20 0 23348 1396 1032 R 11.0 0.0 0:00.03 top
1 root 20 0 15468 900 740 S 0.0 0.0 0:01.15 init
dd if=/dev/mapper/galerkin_storage of=/dev/null bs=100M count=100
100+0 records in
100+0 records out
10485760000 bytes (10 GB) copied, 368.387 s, 28.5 MB/s
верхняя запись при чтении:
top - 21:25:17 up 4 min, 2 users, load average: 0.57, 0.20, 0.09
Tasks: 141 total, 2 running, 139 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.8 us, 3.7 sy, 0.0 ni, 91.9 id, 3.6 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 4044256 total, 1055628 used, 2988628 free, 611612 buffers
KiB Swap: 7812496 total, 0 used, 7812496 free, 130004 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11 root 20 0 0 0 0 R 54.5 0.0 0:07.55 kworker/0:1
30 root 20 0 0 0 0 S 30.3 0.0 0:10.40 kworker/2:1
9 root 20 0 0 0 0 S 24.2 0.0 0:02.59 kworker/1:0
4287 root 20 0 105m 100m 540 D 24.2 2.5 0:04.63 dd
4288 root 20 0 0 0 0 S 12.1 0.0 0:04.24 kworker/3:2
4306 robert 20 0 23348 1404 1032 R 6.1 0.0 0:00.02 top
1 root 20 0 15468 900 740 S 0.0 0.0 0:01.13 init
С hdparm
hdparm -t /dev/mapper/galerkin_storage
/dev/mapper/galerkin_storage:
Timing buffered disk reads: 84 MB in 3.06 seconds = 27.44 MB/sec
Таким образом, производительность чтения по-прежнему значительно ниже производительности записи. Если я правильно интерпретирую luksDump, у меня 256-битный файл aes-cbc. Команда benchmark предполагает, что производительность чтения должна соответствовать моему тесту dd. Однако производительность записи неожиданно высока. Одна вещь меня поразила. Я ранее заполнил зашифрованный раздел / dev / zero, так может ли быть, что записи не нужно выполнять, поскольку данные уже нулевые?