Qualcomm QCE 드라이버, Armv8 암호화 확장(Crypto Extensions)보다 약 48배 느려 폐기 위기
LINUX SECURITY
Google의 Linux 커널 암호화 전문가인 Eric Biggers는 Qualcomm QCE 드라이버를 단순히 "BROKEN" Kconfig 노브(knob) 뒤로 숨기는 것에 그치지 않고, 아예 완전히 제거하는 방안을 검토하고 있습니다. 그 동기는 QCE가 적절한 Linux 커널 사용 방식에 더 부합하는 ARMv8 암호화 확장(ARMv8 Crypto Extensions, ARMv8 CE)보다 약 48배 느리다는 사실이 발견되었기 때문입니다. QCE는 약 48배 느릴 뿐만 아니라, 다음과 같은 상황을 초래했습니다.
"실제로 CPU에서 직접 해싱을 수행하는 것보다 훨씬 더 많은 CPU 사이클을 소비합니다."
만약 이 조사 결과가 정확하다면, 이 드라이버는 완전히 쓸모없는 것이 됩니다.
이 커널 메일링 리스트 스레드에서 더 자세한 내용을 확인할 수 있습니다:
"sha256-lib (즉, ARMv8 CE):
경과 시간(Wall-clock elapsed time): 0.10s
사용된 CPU 시간(CPU time used): 0.10s
hardirq 컨텍스트에서 소비된 CPU 시간: 0.00s
softirq 컨텍스트에서 소비된 CPU 시간: 0.00s
sha256-qce:
경과 시간(Wall-clock elapsed time): 10.76s
사용된 CPU 시간(CPU time used): 5.14s
hardirq 컨텍스트에서 소비된 CPU 시간: 0.77s
softirq 컨텍스트에서 소비된 CPU 시간: 2.31s
따라서 sha256-qce는 ARMv8 CE보다 100배 이상 느리고 50배 이상의 CPU를 사용하며, 그 중 절반 이상이 hardirq 또는 softirq 컨텍스트에서 소비됩니다.
이는 지난번 테스트했을 때보다 훨씬 더 나빠졌습니다! 그래서 귀하의 BAM locking 패치를 롤백하여 시도해 보았습니다:
경과 시간(Wall-clock elapsed time): 4.85s
사용된 CPU 시간(CPU time used): 2.78s
hardirq 컨텍스트에서 소비된 CPU 시간: 0.55s
softirq 컨텍스트에서 소비된 CPU 시간: 0.94s
이것이 지난번 테스트에서 측정했던 수치와 더 비슷하지만, 여전히 형편없습니다. 여전히 CPU에서 직접 해싱을 수행하는 것보다 훨씬 더 많은 CPU 시간을 사용하며, 그 중 상당 부분이 hardirq 및 softirq 컨텍스트에서 소비됩니다. BAM locking은 상황을 더욱 악화시킬 뿐입니다."
따라서 어제 메일링 리스트(mailing list)를 통해 전달된 이 패치를 통해, Eric Biggers는 QCE 드라이버를 구성하는 3,500줄의 모든 코드를 커널(kernel)에서 단순히 제거할 것을 제안하고 있습니다. 해당 커널 메일링 리스트 스레드에서는 드라이버를 유지하고 관리하기를 원하는 최소 한 명의 커널 개발자와 의견을 주고받는 과정이 있었습니다. 하지만 현재 드라이버의 사용량이 제한적이기 때문에, 이 논의에는 가이드를 얻기 위해 Greg Kroah-Hartman도 참여하였으며, 이 드라이버를 커널에 유지하는 것이 타당한지에 대한 논의가 계속 진행 중입니다. 결과가 어떻게 될지 지켜봐야 할 것입니다.