Вчера я обновился до Ubuntu 17.10, и он очень медленно работает при переходе в спящий режим и выходе из него. Например, эта команда:
time docker-compose run web rspec --color spec/models/user_spec.rb:7
Проходит 5 секунд до приостановки и 1,47минутпосле.
Я проверяю, gnome-system-monitor
и все вроде бы нормально.
Я провел некоторые тесты и получил следующий результат перед приостановкой:
~ sysbench cpu --threads=4 run
WARNING: --num-threads is deprecated, use --threads instead
sysbench 1.0.8 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Prime numbers limit: 10000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 3766.37
General statistics:
total time: 10.0009s
total number of events: 37672
Latency (ms):
min: 1.02
avg: 1.06
max: 10.94
95th percentile: 1.10
sum: 39990.91
Threads fairness:
events (avg/stddev): 9418.0000/36.06
execution time (avg/stddev): 9.9977/0.00
~ sysbench memory --threads=4 run
sysbench 1.0.8 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Running memory speed test with the following options:
block size: 1KiB
total size: 102400MiB
operation: write
scope: global
Initializing worker threads...
Threads started!
Total operations: 104857600 (12034664.21 per second)
102400.00 MiB transferred (11752.60 MiB/sec)
General statistics:
total time: 8.7111s
total number of events: 104857600
Latency (ms):
min: 0.00
avg: 0.00
max: 6.78
95th percentile: 0.00
sum: 21761.44
Threads fairness:
events (avg/stddev): 26214400.0000/0.00
execution time (avg/stddev): 5.4404/0.06
~ sysbench fileio --file-total-size=15G --file-test-mode=rndrw --max-requests=0 --file-num=64 --threads=4 run
sysbench 1.0.8 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Extra file open flags: 0
64 files, 240MiB each
15GiB total file size
Block size 16KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...
Threads started!
File operations:
reads/s: 83.32
writes/s: 55.38
fsyncs/s: 85.50
Throughput:
read, MiB/s: 1.30
written, MiB/s: 0.87
General statistics:
total time: 10.0912s
total number of events: 2263
Latency (ms):
min: 0.00
avg: 17.78
max: 584.69
95th percentile: 92.42
sum: 40229.56
Threads fairness:
events (avg/stddev): 565.7500/61.92
execution time (avg/stddev): 10.0574/0.03
~ sysbench threads --threads=4 run
sysbench 1.0.8 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Initializing worker threads...
Threads started!
General statistics:
total time: 10.0002s
total number of events: 203148
Latency (ms):
min: 0.14
avg: 0.20
max: 6.25
95th percentile: 0.21
sum: 39963.81
Threads fairness:
events (avg/stddev): 50787.0000/116.11
execution time (avg/stddev): 9.9910/0.00
~ sysbench mutex run
sysbench 1.0.8 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Initializing worker threads...
Threads started!
General statistics:
total time: 0.1467s
total number of events: 1
Latency (ms):
min: 146.63
avg: 146.63
max: 146.63
95th percentile: 147.61
sum: 146.63
Threads fairness:
events (avg/stddev): 1.0000/0.00
execution time (avg/stddev): 0.1466/0.00
И это после:
~ sysbench cpu --threads=4 run
sysbench 1.0.8 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Prime numbers limit: 10000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 3746.73
General statistics:
total time: 10.0005s
total number of events: 37474
Latency (ms):
min: 1.02
avg: 1.07
max: 12.04
95th percentile: 1.16
sum: 39992.93
Threads fairness:
events (avg/stddev): 9368.5000/452.12
execution time (avg/stddev): 9.9982/0.00
~ sysbench memory --threads=4 run
sysbench 1.0.8 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Running memory speed test with the following options:
block size: 1KiB
total size: 102400MiB
operation: write
scope: global
Initializing worker threads...
Threads started!
Total operations: 104857600 (11640930.78 per second)
102400.00 MiB transferred (11368.10 MiB/sec)
General statistics:
total time: 9.0057s
total number of events: 104857600
Latency (ms):
min: 0.00
avg: 0.00
max: 6.41
95th percentile: 0.00
sum: 21740.13
Threads fairness:
events (avg/stddev): 26214400.0000/0.00
execution time (avg/stddev): 5.4350/0.12
~ sysbench fileio --file-total-size=15G --file-test-mode=rndrw --max-requests=0 --file-num=64 --threads=4 run
sysbench 1.0.8 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Extra file open flags: 0
64 files, 240MiB each
15GiB total file size
Block size 16KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...
Threads started!
File operations:
reads/s: 3.93
writes/s: 2.52
fsyncs/s: 1.81
Throughput:
read, MiB/s: 0.06
written, MiB/s: 0.04
General statistics:
total time: 15.4994s
total number of events: 128
Latency (ms):
min: 0.00
avg: 428.29
max: 6760.00
95th percentile: 1771.29
sum: 54820.53
Threads fairness:
events (avg/stddev): 32.0000/7.18
execution time (avg/stddev): 13.7051/2.10
~ sysbench threads --threads=4 run
sysbench 1.0.8 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Initializing worker threads...
Threads started!
General statistics:
total time: 10.0002s
total number of events: 201233
Latency (ms):
min: 0.14
avg: 0.20
max: 11.33
95th percentile: 0.22
sum: 39965.00
Threads fairness:
events (avg/stddev): 50308.2500/318.90
execution time (avg/stddev): 9.9913/0.00
~ sysbench mutex run
sysbench 1.0.8 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Initializing worker threads...
Threads started!
General statistics:
total time: 0.1603s
total number of events: 1
Latency (ms):
min: 160.21
avg: 160.21
max: 160.21
95th percentile: 161.51
sum: 160.21
Threads fairness:
events (avg/stddev): 1.0000/0.00
execution time (avg/stddev): 0.1602/0.00
Я вижу, что самое важное отличие касается fileio.Редактировать: Я ошибся. Я снова провел тест и у меня, total number of events: 1282
похоже, что-то похожее на первый тест.
Я провел этот тест, чтобы получить больше информации:
~ dd if=/dev/zero of=./largefile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.2191 s, 881 MB/s
➜ dd if=./largefile of=/dev/null bs=4k
262144+0 records in
262144+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.174457 s, 6.2 GB/s
Кажется, это правильно.
У меня естьэто сdmesg
.
Вот самые важные строки:
[ 117.822557] ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20170531/psargs-364)
[ 117.822561] ACPI Error: Method parse/execution failed \_SB.PCI0.SAT0.CHN1.DRV0._GTF, AE_NOT_FOUND (20170531/psparse-550)
[ 117.822577] ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20170531/psargs-364)
[ 117.822579] ACPI Error: Method parse/execution failed \_SB.PCI0.SAT0.CHN1.DRV1._GTF, AE_NOT_FOUND (20170531/psparse-550)
[ 117.822621] ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20170531/psargs-364)
[ 117.822623] ACPI Error: Method parse/execution failed \_SB.PCI0.SAT0.CHN0.DRV0._GTF, AE_NOT_FOUND (20170531/psparse-550)
[ 117.822793] rtc_cmos 00:02: Alarms can be up to one month in the future
[ 119.168408] ata1.01: failed to resume link (SControl 30)
[ 119.323036] ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20170531/psargs-364)
[ 119.323043] ACPI Error: Method parse/execution failed \_SB.PCI0.SAT0.CHN0.DRV0._GTF, AE_NOT_FOUND (20170531/psparse-550)
[ 120.781116] done.
[ 123.636265] ata2.00: link is slow to respond, please be patient (ready=0)
[ 127.848898] ata2.00: SRST failed (errno=-16)
[ 129.051082] ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20170531/psargs-364)
[ 129.051093] ACPI Error: Method parse/execution failed \_SB.PCI0.SAT0.CHN1.DRV1._GTF, AE_NOT_FOUND (20170531/psparse-550)
[ 129.205049] ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20170531/psargs-364)
[ 129.205059] ACPI Error: Method parse/execution failed \_SB.PCI0.SAT0.CHN1.DRV0._GTF, AE_NOT_FOUND (20170531/psparse-550)
Кажется, есть некоторые проблемы с ata2 и ACPI. Я предполагаю, что это связано, но я не знаю, что делать. Эти строки появляются только когда я приостанавливаю и возвращаюсь.
Вот информация о моей системе
Linux oscar 4.13.0-16-lowlatency #19-Ubuntu SMP PREEMPT Wed Oct 11 19:51:52 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Есть ли у вас какие-нибудь подсказки?
решение1
Я нашел решение, которое сработало для меня (Ubuntu 20.04, DELL XPS 15)здесь. Похоже, он работает на широком спектре систем (я видел Ubuntu 15.04, 16.04, 18.04 и некоторые версии Archlinux), так что есть большая вероятность, что он будет работать и на вашей системе.
Подводя итог, попробуйте сделать следующее:
sudo apt install msr-tools
sudo modprobe msr
sudo rdmsr -a 0x19a
Если последняя команда возвращает не только 0
s (в моем случае она возвращалась восемь раз 10
), выполните:
sudo wrmsr -a 0x19a 0x0
Все должно немедленно ускориться. Кроме того, при rdmsr
повторном запуске таким же образом, как описано выше, теперь он должен возвращать только 0
s.