Странная хренотень творится. Есть сервер, проц E5-2620, на чистом шифровании (с dmzero бэкендом) выдает:
# echo "0 2147483648 zero" | dmsetup create zerodisk
# cryptsetup --cipher=aes-cbc-essiv:sha256 --hash=sha256 create testcrypto /dev/mapper/zerodisk
Пишем:
# echo 3 > /proc/sys/vm/drop_caches
# dd if=/dev/zero of=/dev/mapper/testcrypto bs=1M count=10240
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 15.6629 s, 686 MB/s
Читаем:
# echo 3 > /proc/sys/vm/drop_caches
# dd of=/dev/null if=/dev/mapper/testcrypto bs=1M count=10240
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 23.1772 s, 463 MB/s
Так же на этом сервере есть рейд-массив, который выдает:
# echo 3 > /proc/sys/vm/drop_caches
# dd if=/dev/sdc of=/dev/null bs=1M count=10240
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 14.5746 s, 737 MB/s
# echo 3 > /proc/sys/vm/drop_caches
# dd of=/dev/sdc if=/dev/zero seek=1000 bs=1M count=32768
32768+0 records in
32768+0 records out
34359738368 bytes (34 GB) copied, 42.6876 s, 805 MB/s
А теперь самое интересное. Если навесить cryptsetup на этот массив, то получаем:
Читаем:
# echo 3 > /proc/sys/vm/drop_caches
# dd if=/dev/mapper/CRYPT_RAID6 of=/dev/null bs=1M count=10240
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 58.4221 s, 184 MB/s
Пишем:
# echo 3 > /proc/sys/vm/drop_caches
# dd of=/dev/mapper/CRYPT_RAID6 if=/dev/zero bs=1M count=10240
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 68.5209 s, 157 MB/s
При этом ksoftirqd жрёт почти 100% одного ядра, похоже проблема в нём. Я подозреваю что страдает шедулинг и оно постоянно прыгает по разным ядрам.
# cat /proc/interrupts
...
RES: 1433131 2849086 613016 57347 305756 195228 Rescheduling interrupts
...
Куда копать, комрады?
Да, ядро 3.0.32