Alta carga de CPU durante a E / S

0

Estou usando o Ubuntu Server 12.04 LTS em uma máquina baseada no AMD E-350. Durante cargas pesadas de E / S (por exemplo, transferindo arquivos via NFS ou HTTP, extraindo arquivos, fazendo backups, etc.), a carga da CPU fica completamente insana. Eu vi médias de carga bem acima de oito nesta máquina de dois núcleos ... e a capacidade de resposta é muito menor.

Acho que os problemas estão definitivamente no lado do kernel, mas veja você mesmo:

$ sudo hdparm -I / dev / sdb

/dev/sdb:

ATA device, with non-removable media
    Model Number:       SAMSUNG HD501LJ                             
    Firmware Revision:  CR100-10
    Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5
Standards:
    Used: ATA-8-ACS revision 3b 
    Supported: 8 7 6 5 
Configuration:
    Logical        max    current
    cylinders    16383    16383
    heads        16    16
    sectors/track    63    63
    --
    CHS current addressable sectors:   16514064
    LBA    user addressable sectors:  268435455
    LBA48  user addressable sectors:  976771055
    Logical/Physical Sector size:           512 bytes
    device size with M = 1024*1024:      476938 MBytes
    device size with M = 1000*1000:      500106 MBytes (500 GB)
    cache/buffer size  = 16384 KBytes (type=DualPortCache)
Capabilities:
    LBA, IORDY(can be disabled)
    Queue depth: 32
    Standby timer values: spec'd by Standard, no device specific minimum
    R/W multiple sector transfer: Max = 16    Current = 16
    Recommended acoustic management value: 254, current value: 128
    DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 udma7 
         Cycle time: min=120ns recommended=120ns
    PIO: pio0 pio1 pio2 pio3 pio4 
         Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
    Enabled    Supported:
       *    SMART feature set
            Security Mode feature set
       *    Power Management feature set
       *    Write cache
       *    Look-ahead
       *    Host Protected Area feature set
       *    WRITE_BUFFER command
       *    READ_BUFFER command
       *    NOP cmd
       *    DOWNLOAD_MICROCODE
            SET_MAX security extension
       *    Automatic Acoustic Management feature set
       *    48-bit Address feature set
       *    Device Configuration Overlay feature set
       *    Mandatory FLUSH_CACHE
       *    FLUSH_CACHE_EXT
       *    SMART error logging
       *    SMART self-test
       *    General Purpose Logging feature set
       *    64-bit World wide name
       *    Segmented DOWNLOAD_MICROCODE
       *    Gen1 signaling speed (1.5Gb/s)
       *    Gen2 signaling speed (3.0Gb/s)
       *    Native Command Queueing (NCQ)
       *    Host-initiated interface power management
       *    Phy event counters
       *    DMA Setup Auto-Activate optimization
            Device-initiated interface power management
       *    Software settings preservation
       *    SMART Command Transport (SCT) feature set
       *    SCT Long Sector Access (AC1)
       *    SCT LBA Segment Access (AC2)
       *    SCT Error Recovery Control (AC3)
       *    SCT Features Control (AC4)
       *    SCT Data Tables (AC5)
Security: 
    Master password revision code = 65534
        supported
    not    enabled
    not    locked
        frozen
    not    expired: security count
        supported: enhanced erase
    168min for SECURITY ERASE UNIT. 168min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 50000f001b301090
    NAA        : 5
    IEEE OUI    : 0000f0
    Unique ID    : 01b301090
Checksum: correct

$ iostat 1 # Uma fatia abaixo

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
sdb             355.00     60544.00         0.00      60544          0

$ vmstat 1

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  9      0 152864     12 3302740    0    0 61952     0 18115 1999  1 24 12 63
 0  8      0 153316     12 3302060    0    0 59648     0 20060 2393  1 33  9 57
 0 10      0 153432     12 3302060    0    0 54784     0 18430 2205  1 24 11 65
 1  8      0 154848     12 3301216    0    0 59392     0 19011 2291  1 31  8 60
 0  9      0 149676     12 3306324    0    0 59392     0 21149 2417  2 29  6 64
 0  9      0 150460     12 3305268    0    0 61952     0 18664 2117  1 28 11 60
 1  8      0 152084     12 3304028    0    0 59392     0 20045 2245  2 31  6 62
 1  8      0 152548     12 3303452    0    0 60160     0 20105 2426  2 29  9 60

Algo que eu possa fazer sobre isso?

    
por dom0 11.11.2012 / 18:03

2 respostas

2

Esse é o comportamento esperado. Você vai querer verificar a diferença entre o uso de carga e CPU (por exemplo, usando top ). Provavelmente, o uso de CPU é muito baixo, enquanto a carga de carga é alta. Isso é causado pela carga da cpu indicada e, na maior parte do tempo, é completamente inofensiva.

Na página uptime man:

   System  load  averages is the average number of processes that are either in a runnable or uninterrupt‐
   able state.  A process in a runnable state is either using the CPU  or  waiting  to  use  the  CPU.   A
   process in uninterruptable state is waiting for some I/O access, eg waiting for disk.  The averages are
   taken over the three time intervals.  Load averages are not normalized for the number of CPUs in a sys‐
   tem, so a load average of 1 means a single CPU system is loaded all the time while on a 4 CPU system it
   means it was idle 75% of the time.

Em outras palavras, é o número médio de processos aguardando a manutenção. Mas devido ao fato de que todos esses processos estão aguardando dados dos discos, esse número pode ficar grande quando muita E / S de disco está sendo planejada.

Solução: não se preocupe ou compre discos mais rápidos (ou RAID decente, SAN, ...).

Eu pessoalmente gosto de dstat para solucionar esses problemas.

    
por jippie 11.11.2012 / 21:07
0

É muito normal que a carga seja alta durante muita atividade de disco, o que você deve verificar é "top" e "iowait" Ou neste caso "0.7% wa" é o tempo de espera. Eu suspeito que a sua será alta.

Cpu0  : 17.4%us,  3.0%sy,  0.0%ni, 78.9%id,  0.7%wa,  0.0%hi,  0.0%si,  0.0%st

No seu exemplo, não sei em quais unidades essas medições estão, mas se o wa for%, então é bem alto.

Problema Vejo que o seu disco Samsung está horrivelmente lento nos testes de desempenho: link Esse desempenho ruim que você está vendo é definitivamente um resultado que reflete os benchmarks. Na verdade, eu nunca vi uma unidade de 7200 RPM mais lenta!

Solução: 1.) Substitua o seu disco por um modelo com melhor desempenho (recomendo qualquer um dos novos modelos Toshiba SATA3 7200 de 3.5 ").

Por exemplo, eu encontrei com 2x2TB Toshiba 7200 RPMs no mdadm RAID 10 minha velocidade de IO é aproximadamente 389-400MB / s (efetivamente o dobro da velocidade de uma única unidade).

    
por Areeb Soo Yasir 10.09.2017 / 07:49