Cloudflare 개발자는 Linux에서 디스크 암호화 속도를 높이기 위해 패치 작업

Cloudflare

Cloudflare 개발자는 Linux 커널에서 디스크 암호화 성능을 최적화하기 위해 수행하는 작업에 대한 정보. dm-crypt 및 Crypto API 하위 시스템 용 패치.

이것으로, 합성 테스트는 읽기 및 쓰기 대역폭을 두 배로 늘릴 수있었습니다. 뿐만 아니라 지연 시간 절반. 실제 시스템에서 테스트 할 때 암호화 오버 헤드는 데이터 암호화를 사용하지 않고 디스크로 작업 할 때 볼 수있는 수준으로 거의 감소했습니다.

암호화 개선에 대한 관심 디스크의 데이터 Cloudflare가 dm-crypt를 사용하기 때문입니다. CDN에서 콘텐츠를 캐시하는 데 사용되는 드라이브의 데이터를 암호화합니다. Dm-crypt는 블록 장치 수준에서 작동하며 읽기 요청을 쓰고 해독하는 I / O 요청을 암호화하여 블록 장치와 파일 시스템 드라이버 사이의 계층 역할을합니다.

성능을 평가하려면 유연한 I / O 테스트 패키지를 사용하는 dm-crypt, se는 암호화 된 파티션 작업 속도를 측정했습니다. 디스크 성능의 변동을 없애기 위해 RAM에 위치한 RAM 디스크에서 암호화되지 않습니다.

암호화되지 않은 파티션의 경우 읽기 및 쓰기 성능은 1126MB / s로 유지되었지만 암호화를 사용하면 속도가 7MB / s로 147 배 떨어졌습니다.

처음에는, 비효율적 인 알고리즘의 사용이 의심 됨 커널 암호화 시스템에서. 그러나 테스트에서는 256 개의 암호화 키를 사용하는 더 빠른 aes-xts 알고리즘을 사용했습니다.이 알고리즘은 "cryptsetup 벤치 마크"를 실행할 때 성능이 RAM 디스크를 테스트 할 때 얻은 결과보다 XNUMX 배 이상 높습니다.

DM-암호화

실험 dm-crypt 플래그 사용 성능 조정이 작동하지 않았습니다.: –perf-same_cpu_crypt 플래그 사용시 성능은 136MB / s까지 감소했으며 –perf-submit_from_crypt_cpus 플래그 사용시 166MB / s까지만 증가했습니다.

심층 분석 일의 논리 dm-crypt가 그렇게 간단하지 않다는 것을 보여주었습니다 보이는대로.

FS 컨트롤러로부터 쓰기 요청이 수신되면 dm-crypt는이를 즉시 처리하지 않고 즉시 이해하지 못하는 "kcryptd"대기열에 넣습니다. 큐에서 암호화를 위해 요청이 Linux Crypto API로 전송됩니다.

처음 읽을 때 dm-crypt는 "kcryptd_io"를 큐에 넣습니다. 장치에서 데이터를 수신하기위한 요청. 잠시 동안 데이터를 사용할 수 있으며 암호 해독을 위해 "kcryptd"대기열에 있습니다.

Kcryptd는 정보를 비동기 적으로 해독하는 Linux 암호화 API에 요청을 보냅니다. 요청이 항상 모든 대기열을 통과하지는 않습니다.,하지만 최악의 경우 쓰기 요청은 대기열에 최대 4 회 설정됩니다. 그리고 최대 3 번 읽기 요청. 대기열의 모든 히트는 지연으로 이어집니다. 이것이 dm-crypt 성능이 크게 저하되는 주요 이유입니다.

최신 드라이브가 더 빠르고 스마트 해짐을 고려하여 Linux 커널의 리소스 할당 시스템이 수정되었으며 일부 하위 시스템이 재 설계되었습니다., Cloudflare 엔지니어는 dm-crypt에 새로운 운영 모드를 추가하여 추가 대기열 및 비동기 호출의 사용을 제거했습니다.

이 모드는 별도의 "force_inline"플래그에 의해 활성화되며 dm-crypt를 들어오는 요청을 암호화 및 해독하는 간단한 프록시 형태로 가져옵니다. 암호화 알고리즘의 명시적인 선택을 통해 Crypto API와의 상호 작용이 최적화되었습니다. 동기 모드에서 작동하며 요청 큐를 사용하지 않습니다.

실제 서버에서 부하를 테스트 할 때 새로운 구현은 암호화없이 작동하는 구성과 매우 유사한 성능을 보여 주며 Cloudflare 캐시가있는 서버에 암호화를 포함해도 응답 속도에 영향을주지 않았습니다.

미래에, Cloudflare는 준비된 패치를 기본 Linux 커널로 전송할 계획입니다.하지만 그 전에는 특정 부하에 최적화되어 있고 모든 응용 분야를 다루지는 않기 때문에 수정해야합니다.

출처 : https://blog.cloudflare.com


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.