그래서 저는 최근(2018년 1월 초)에 수정된 KPTI 커널 수정 사항이 포함된 Fedora 26 노트북용 커널 업데이트를 받았습니다.충돌 오류. 나는 이러한 수정 사항이 Linux 시스템에 미치는 영향에 대해 많은 추측을 들었습니다. 실제로 Intel은 황제를 믿는 것 같습니다.아직도 말끔하게 옷을 입고 있다. 이 링크에서 볼 수 있듯이 업계의 일부 소식통(특히 Apple, Microsoft, Amazon 및 Google)은 영향이 미미할 것이라고 주장합니다.이 링크. 다른 사람큰 영향을 미친다고 주장.
언론 보도의 혼란에 만족하지 않고 "이것이 실제로 내 컴퓨터에 어떤 영향을 미치는가?"를 알고 싶었습니다. 이론적으로 CPU 바인딩 프로세스에 미치는 영향은 미미한 반면, 많은 수의 시스템 호출(예: 디스크 또는 네트워크 I/O)을 수행하는 프로세스는 더 큰 영향을 받습니다.
나는 아래에 스스로 대답합니다.
추신: 저는 더 현대적인 프로세서에 대한 벤치마크를 본 적이 없습니다.매우흥미롭게도 내가 들었던 것처럼"...새로운 프로세서는 큰 피해를 입히지 않습니다."해당 프로세서는 무엇이며, "별로 크지 않은" 정도는 어느 정도입니까? 저는 Intel i5-3210m 듀얼 코어(코어당 스레드 2개) 프로세서를 탑재한 구형 Lenovo Thinkpad T430S를 사용하고 있습니다. 멜트다운과 그 복원에 관해 이것은 현대적인 것입니까? Microsoft에 따르면 "...(it)는 2015년 이전 프로세서를 탑재한 Windows 7, 8, 10을 실행하는 소비자 장치가 속도 저하를 경험할 가능성이 더 높다고 말합니다."자체 벤치마크에서는 2015년과 2017년 프로세서 간의 차이가 나타나지 않는 것 같습니다.
답변1
새 커널을 부팅하기 전에 몇 가지 실수를 얻고 싶습니다. 커널을 4.14.8에서 4.14.11로 업그레이드했습니다. 후자에는 Meltdown 취약점에 대한 KPTI 수정 사항이 포함되어 있습니다. 저는 Intel i5-3210m 듀얼 코어(코어당 스레드 2개) 프로세서를 탑재한 구형 Lenovo Thinkpad T430S를 사용하고 있습니다. 결과가 흥미로워서 여기에 게시해야겠다고 생각했습니다.
저는 세 가지 벤치마크를 수행했습니다.
- AIM9, 접근 가능 https://sourceforge.net/projects/aimbench/files/aim-suite9/Initial%20release/s9110.tar.Z/download이 벤치마크는 오래되었지만 정수, 부동 소수점, 파일 작업, 메시지 전달 등을 포함한 시스템의 기본 작업을 테스트하는 데는 상당히 포괄적인 것으로 보입니다.
- x86_64 gcc 컴파일러로 컴파일합니다.
- 고대 보니++ 벤치마크 버전 1.97을 실행합니다.
결과는 다음과 같습니다. 몇 가지 놀라운 값(보조 루프/초 및 디렉터리 작업 AIM9 벤치마크, 블록 순차 출력 bonnie++ 벤치마크 모두 더 나은 성능을 보임) 외에도 시스템이 약간의 타격을 입은 것으로 보입니다. 컴파일에는 많은 파일 I/O 및 CPU 작업도 포함되기 때문에 gcc 컴파일이 매우 흥미롭다고 생각합니다. 이러한 것들은 내 컴퓨터에서 정기적으로 수행하는 작업과 유사합니다. 그럼에도 불구하고, 이 3가지 벤치마크 세트는 모두 한 가지 점에 동의하는 것 같습니다. 내 시스템은 일반적으로 KPTI Meltdown 복구 커널을 설치한 이후로 정수 및 부동 소수점 연산까지 상당한 타격을 입었습니다. 원래 160분이 걸렸던 gcc 컴파일이 이제 172분 밖에 걸리지 않습니다. 정말 나쁘다.
AIM9 benchmark
AIM Independent Resource Benchmark - Suite IX v1.1, January 22, 1996
Copyright (c) 1996 - 2001 Caldera International, Inc.
All Rights Reserved
BEFORE:
Machine's name : rodin
Machine's configuration : kernel_4.14.8-200
Number of seconds to run each test [2 to 1000] : 10
Path to disk files : /var/tmp/aim9
AFTER:
Machine's name : rodin
Machine's configuration : kernel_4.14.11-200
Number of seconds to run each test [2 to 1000] : 10
Path to disk files : /var/tmp/aim9
참고: AIM9 벤치마크에는 컴파일 시 테스트 중 하나가 완료되지 않는 버그가 있습니다. 이것이 작동하려면 creat-clo.c에서 97행을 변경해야 했습니다.
static int sigcount; /* count of signals */
이와 관련하여:
volatile static int sigcount; /* count of signals */
내 벤치마크 결과는 다음과 같습니다.
AIM9 Benchmark
BEFORE AFTER Percent Change Description
01 1.996 M 1.929 M -3.34 Thousand Double Precision Additions/second
02 1.980 M 1.945 M -1.75 Thousand Single Precision Additions/second
03 8.559 M 8.259 M -3.50 Thousand Long Integer Additions/second
04 8.592 M 8.280 M -3.63 Thousand Integer Additions/second
05 8.599 M 8.268 M -3.85 Thousand Short Integer Additions/second
06 205400.00 190400.00 -7.30 File Creations and Closes/second
07 552330.00 384665.33 -30.35 System Allocations & Pages/second
08 2.844 M 1.373 M -51.71 System Memory Allocations/second
09 75.980 M 74.623 M -1.78 Non-local gotos/second
10 1.131 M 651400.00 -42.43 Signal Traps/second
11 855.64 787.71 -7.93 Program Loads/second
12 3246.75 3846.15 18.46 Task Creations/second
13 166307.40 154135.80 -7.31 Link/Unlink Pairs/second
14 504839.16 369664.00 -26.77 Random Disk Reads (K)/second
15 451072.00 339628.37 -24.70 Random Disk Writes (K)/second
16 3.285 M 1.765 M -46.24 Sequential Disk Reads (K)/second
17 698880.00 598528.00 -14.35 Sequential Disk Writes (K)/second
18 537088.00 431616.00 -19.63 Disk Copies (K)/second
19 115.78 116.58 .69 Sync Random Disk Writes (K)/second
20 116.42 114.75 -1.43 Sync Sequential Disk Writes (K)/second
21 116.05 114.90 -.99 Sync Disk Copies (K)/second
22 79020.00 73711.29 -6.71 Directory Searches/second
23 311100.00 299400.00 -3.76 Thousand Double Precision Divides/second
24 316483.52 305694.31 -3.40 Thousand Single Precision Divides/second
25 105284.72 101688.31 -3.41 Thousand Long Integer Divides/second
26 294660.00 286470.00 -2.77 Thousand Integer Divides/second
27 290700.00 282420.00 -2.84 Thousand Short Integer Divides/second
28 424.140 M 407.756 M -3.86 Function Calls (no arguments)/second
29 462.336 M 448.460 M -3.00 Function Calls (1 argument)/second
30 485.198 M 472.115 M -2.69 Function Calls (2 arguments)/second
31 236.441 M 226.969 M -4.00 Function Calls (15 arguments)/second
32 195.30 186.63 -4.43 Integer Sieves/second
33 1.202 M 1.160 M -3.48 Thousand Double Precision Multiplies/second
34 1.204 M 1.166 M -3.18 Thousand Single Precision Multiplies/second
35 1.396 M 1.359 M -2.69 Thousand Long Integer Multiplies/second
36 1.396 M 1.357 M -2.83 Thousand Integer Multiplies/second
37 1.365 M 1.327 M -2.78 Thousand Short Integer Multiplies/second
38 554540.00 538080.00 -2.96 Numeric Functions/second
39 1.614 M 1.561 M -3.28 Zeros Found/second
40 2.513 M 2.431 M -3.28 Trigonometric Functions/second
41 18.605 M 17.861 M -4.00 Point Transformations/second
42 3880.00 3766.00 -2.93 Linear Systems Solved/second
43 28060.00 26980.00 -3.84 String Manipulations/second
44 14.751 M 14.373 M -2.55 Dynamic Memory Operations/second
46 5277.00 5121.00 -2.95 Sort Operations/second
47 4231.00 10771.00 154.57 Auxiliary Loops/second
48 2.828 M 2.900 M 2.54 Directory Operations/second
49 137.36 156.70 14.07 Shell Scripts/second
50 137.16 157.64 14.93 Shell Scripts/second
51 137.60 161.90 17.65 Shell Scripts/second
52 44.497 M 42.774 M -3.87 Series Evaluations/second
53 1.092 M 607030.00 -44.43 Shared Memory Operations/second
56 1.318 M 825670.00 -37.38 FIFO Messages/second
57 922370.00 664690.00 -27.93 Stream Pipe Messages/second
58 866290.00 632950.00 -26.93 DataGram Pipe Messages/second
59 1.922 M 1.038 M -45.96 Pipe Messages/second
60 19725.935 M 18947.483 M -3.94 Memory to Memory Copy/second
=========================================================================================================
GCC compile, both "configure" and "make"
Results summary::
configure: 38% real slowdown
make (x86_64 only): 7.7% real slowdown, 5.5% user CPU slowdown
BEFORE AFTER
time ../gcc-7.2.0/configure --disable-multilib | time ../gcc-7.2.0/configure --disable-multilib
... | ...
configure: creating ./config.status | configure: creating ./config.status
config.status: creating Makefile | config.status: creating Makefile
|
real 0m2.467s | real 0m3.420s
user 0m1.835s | user 0m1.936s
sys 0m1.108s | sys 0m1.295s
|
time make | time make
... | ...
real 160m8.766s | real 172m28.158s
user 152m11.430s | user 163m34.790s
sys 6m41.507s | sys 7m5.214s
=========================================================================================================
BONNIE++
Version: 1.97
See https://www.coker.com.au/bonnie++/experimental/ . This version was provided by my Fedora distribution.
Run using: bonnie++ -n 1024
Sample results:
BEFORE AFTER % change from before
Sequential Output, per char 1115 K/s 890 K/s -20
Sequential Output, block 358891 K/s 461208 K/s +28
Sequential Input, per char 4181 K/s 1989 K/s -52
Sequential Input, block 515347 K/s 521646 K/s -1,2
Random Seeks 5651 /s 5221 /s -7.6
Sequential Create, Create 41855 /s 40751 /s -2.74
Read 741945 /s 624554 /s -15.8
Delete 79832 / s 78340 /s -1.9
Random Create, Create 41198 /s 41003 /s -0.47
Read 741945 /s 719494 /s -3.02
Delete 61154 /s 60698 /s -0.74
Bonnie 결과는 다음에서 확인할 수 있습니다.
앞으로: https://bintray.com/greygnome/generic/download_file?file_path=bon_results_before_kpti.html
뒤쪽에: https://bintray.com/greygnome/generic/download_file?file_path=bon_results_after_kpti.html