저는 cryptsetup을 사용하여 NFS 이더넷 표준 연결을 통해 암호화된 디스크 공간을 생성하는 임베디드 소프트웨어를 개발 중입니다... 이 디스크에서 달성한 쓰기 속도를 알고 싶습니다(간단한 성능 분석).
먼저 표준 벤치마크를 실행합니다.
root@sbc-lynx:/mnt# cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1 33098 iterations per second for 256-bit key
PBKDF2-sha256 52851 iterations per second for 256-bit key
PBKDF2-sha512 34492 iterations per second for 256-bit key
PBKDF2-ripemd160 29789 iterations per second for 256-bit key
PBKDF2-whirlpool 7062 iterations per second for 256-bit key
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 26.7 MiB/s 24.5 MiB/s
serpent-cbc 128b 6.6 MiB/s 7.3 MiB/s
twofish-cbc 128b 10.2 MiB/s 11.0 MiB/s
aes-cbc 256b 21.4 MiB/s 20.8 MiB/s
serpent-cbc 256b 6.6 MiB/s 7.3 MiB/s
twofish-cbc 256b 10.2 MiB/s 10.2 MiB/s
aes-xts 256b 9.0 MiB/s 9.0 MiB/s
serpent-xts 256b 7.0 MiB/s 7.2 MiB/s
twofish-xts 256b 10.7 MiB/s 10.9 MiB/s
aes-xts 512b 7.1 MiB/s 7.0 MiB/s
serpent-xts 512b 7.0 MiB/s 7.1 MiB/s
twofish-xts 512b 10.7 MiB/s 10.9 MiB/s
테스트 목적으로 성능이 좋은 것으로 보이는 eaes-cbc-256을 선택했습니다.
하지만 이제 실제 달성된 속도를 테스트하고 싶습니다. 내 NFS는 /mnt/에 마운트되었으며 암호화된 폴더는 /home/encryptroot/에 올바르게 마운트되었습니다. 나는 다음을 사용했다:
time dd bs=5M count=1 if=/dev/zero of=/mnt/ppx conv=fsync
1+0 records in
1+0 records out
real 0m0.556s
user 0m0.000s
sys 0m0.110s
time dd bs=5M count=1 if=/dev/zero of=/home/encryptroot/ppx conv=fsync
1+0 records in
1+0 records out
real 0m1.104s
user 0m0.000s
sys 0m0.180s
이 결과에서 일반 폴더의 경우 거의 9MB/s
, 암호화된 폴더의 경우 4MB/s를 얻었습니다
. 질문 1) 이것이 쓰기 속도를 평가하는 유효한 방법입니까? fsync에 인수를 사용하면 파일을 실제로 디스크에 복사하는 데 걸리는 시간을 평가해야 합니다(캐시로 복사하는 것과 반대).
20MB/s의 암호화 가능성이 있어도 사용 가능한 총 대역폭(약 9MB/s)을 채울 수 없었기 때문에 이 결과가 만족스럽지 않습니다.
최종 조사: 비밀번호를 변경하고 기본 aes-xts를 사용했는데 반복되는 최대값인 9MB/s에 도달해야 합니다.
time dd bs=5M count=1 if=/dev/zero of=/home/encryptroot/ppx conv=fsync
1+0 records in
1+0 records out
real 0m2.281s
user 0m0.000s
sys 0m0.180s
2.2MB/s의 쓰기 속도를 얻으세요.
질문2) 이러한 결과를 분석할 때 고려해야 할 다른 요소가 있습니까? xts의 오버헤드가 너무 높아 처리량이 줄어들 가능성이 있습니까? 다른 테스트 제안 사항이 있나요?
감사해요