Muito lento após suspensão no Ubuntu 17.10

Muito lento após suspensão no Ubuntu 17.10

Fiz uma atualização para o Ubuntu 17.10 ontem e fica muito lento quando suspendo e acordo. Por exemplo, este comando:

time docker-compose run web rspec --color spec/models/user_spec.rb:7

Demora 5 segundos antes da suspensão e 1,47minutosdepois.

Eu verifico gnome-system-monitore tudo parece estar normal.

Fiz alguns benchmarks e tenho este resultado antes da suspensão:

~ 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

E isso depois:

~ 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

Vejo que a diferença mais importante é para o fileio.Editar: eu estava errado. Fiz o teste novamente e tenho total number of events: 1282o que parece ser semelhante ao primeiro teste.

Fiz este teste para ter mais informações:

~ 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

Parece estar correto.

Eu tenhoisso comdmesg.

Aqui estão as linhas mais importantes:

[  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)

Parece que há alguns problemas com ata2 e ACPI. Suponho que isso esteja relacionado, mas não sei o que fazer. Essas linhas só aparecem quando eu suspendo e volto.

Aqui estão informações sobre meu sistema

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

Você tem alguma pista?

Responder1

Encontrei uma solução que funcionou para mim (Ubuntu 20.04, DELL XPS 15)aqui. Parece funcionar em uma ampla variedade de sistemas (vi o Ubuntu 15.04, 16.04, 18.04 e algumas versões do Archlinux), então há uma boa chance de que funcione no seu sistema também.

Em resumo, tente o seguinte:

sudo apt install msr-tools
sudo modprobe msr
sudo rdmsr -a 0x19a

Se o último comando não retornar apenas 0s (no meu caso estava retornando oito vezes 10), execute:

sudo wrmsr -a 0x19a 0x0

As coisas devem acelerar imediatamente. Além disso, ao executar rdmsrnovamente da mesma forma descrita acima, agora deverá retornar apenas 0s.

informação relacionada