본문으로 바로가기

Intel CPU Meltdown 취약점 패치 2차 테스트와 마무리

category Linux 2018.01.05 17:06

1차 테스트에 이어서 2차 테스트를 진행해봤습니다. 2차 테스트는 1차에서 진행했던 File I/O 뿐만 아니라, 서버 애플리케이션으로 사용하는 웹 서버, DBMS, 그리고 생각보다 리소스를 많이 사용하는 오디오 인코딩과 비디오 인코딩 등의 테스트를 진행하였습니다.



테스트 진행 사항

- SQLite I/O Test (only HDD)

- FLAC Audio Encoding

- Opus Codec Encoding

- nginx Benchmark

- GCC Compile Test

- File I/O Test


테스트는 총 6가지로 진행하였으며 그 중 마지막 File system Test는 어제 진행했던 4000번의 파일 생성을 다시 테스트한 것입니다. SQLite의 DBMS 테스트는 저의 노트북 환경상 HDD에서만 진행하였습니다.



SQLite I/O Test

SQLite는 2500 줄의 INSERT 쿼리 문을 사용하여 DB를 생성한 결과이며 HDD에서 테스트하였습니다.

패치 하기 전(상), 패치 한 후(하)의 모습입니다. 역시 SATA3를 사용하여서 그런지, HDD I/O 대한 성능 저하는 그렇게 크지 않았습니다.



FLAC Audio Encoding

FLAC 파일 인코딩 테스트입니다.


 

인코딩 작업을 하는 데 있어 CPU 작업을 많이 사용하는 편이긴 하지만, 예상 외로 큰 성능 저하는 없었습니다.



Opus Codec Encoding

혹시 모르니, 다른 인코딩도 한 번 테스트 해봤습니다.


 

 

뭐 비슷하네요. 인코딩 같은 부분 대해서는 확실히 성능 저하가 많지 않습니다.



nginx Webserver Test

이번에는 서버에서 그나마 조금 비중이 큰 웹 서버를 벤치마킹 해봤습니다.


 

nginx 웹 서버의 경우, 요청 수에 따라 조금 성능 저하가 있긴 했는데요. 하지만 역시 그렇게 큰 저하 폭은 아니었습니다.



GNU C Compiler Test

그러면 CPU 점유율을 많이 차지하고, 또 많이 사용하는 컴파일러는 어떨까요?


역시 컴파일 속도에도 성능 저하는 확실히 있었습니다. 규모는 Linux Kernel 급 정도 되는 코드를 컴파일하여 테스트한 결과입니다.



File I/O Test

1차 테스트에 이어서 이번에는 지난 번 테스트보다 더 많은 디렉터리와 파일을 생성해봤습니다. 

지난번에는 4000개 파일에 서브 디렉터리를 32개를 주고, 각 4바이트 씩 파일을 만들었었는데, 이번에는 100개의 서브 디렉터리에 4바이트 크기의 파일을 10000개를 생성하였습니다.


먼저 M.2 SSD 테스트 결과입니다.


M.2 SSD에서 어마어마한 성능 차이가 있네요. 패치 전에 약 40초 정도 걸리는 파일 생성 작업이 패치를 하고 나니 무려 1분 20초가 소요되는군요.



반면에 SATA3를 사용한 HDD에서는 거의 저하가 나타나지 않았습니다. SQLite 벤치마킹 테스트 결과랑 거의 비슷한 변화였다고 보셔도 무방합니다.




테스트 결론...

이번 Meltdown 패치에 대한 30% 성능 저하는 사실입니다. 하지만 몇 가지 예외가 있습니다. CPU의 전체 성능이 떨어진 것은 아니며 커널 페이지 테이블을 분리함으로써 고쳐진 문제이기 때문인 이유와 테스트 결과를 바탕으로 내린 저의 생각은 이렇습니다.


System Call 함수를 번복하여 사용할 때 성능이 갈수록 더 저하가 심함


그 근거로 File 입출력에서는 fsync 시스템 함수를 자주 호출함으로써 실제 2~3배 정도 가까이 성능 저하 현상이 나타났으며 syscall 함수를 1억 번 불렀을 때도 4배나 되는 성능 저하 현상이 보였다는 것입니다.


또한 이 현상은 SATA3를 사용하는 하드웨어가 아닌 M.2, NVMe 계열의 PCI 하드웨어 계열에서 주로 그 성능 저하가 굉장히 심하다는 것을 알 수 있었고, CPU 세대에 따른 성능 저하 폭은 아무래도 Skylake 아키텍처 이하에서 좀 더 번듯하게 나타나는 것 같았습니다.


하지만 현재 스펙타의 취약점이 공개되었고, 전 포스트에서 봤듯이 이미 메모리 해킹한 영상이 올라왔으니, 패치는 당연히 해야 한다고 생각합니다. 소중한 데이터를 손실당하니, 성능에 대한 이슈를 감안해야겠죠. 아마도 이것은 시스템 엔지니어나 서버 관리자 여러분들의 개인 재량이라고 생각합니다.



마치며....

여기까지 Intel CPU 성능 저하에 대한 이슈에 대해 포스팅 해봤습니다. 테스트를 하는 데, Linux kernel 4.15-rc6 버전과 Phoronix-test-suite를 사용하였으며 System call 소스 코드에 대해서는 레딧에서 테스트한 결과를 인용하였습니다. 혹시 현재 운용 중인 서버나 시스템에 테스트하고자 하는 데 참고하시기 바랍니다.


현재 Windows 10 RS3 버전과 Mac OS X 10.13.2 버전에서는 이미 이 취약점이 패치되었다 합니다. Linux 또한 커널은 올라와 있지만 각 배포판에 대해서는 아직 패치가 이루어지지 않았을 것이고, 클라우드 업체(AWS, GCP, Azure 등)에서도 각 패치 날짜가 정해져 있을 것이니, 패치에 대한 상세 사항은 해당 클라우드 홈페이지에서 확인하시면 됩니다.


이상으로 Intel CPU 성능 저하에 대한 블로그 포스팅을 모두 마치겠습니다.


comments powered by Disqus

티스토리 툴바