pausas de lectura regulares de zfs

pausas de lectura regulares de zfs

Tenemos un sistema de archivos zfs ejecutándose en openindiana con una carga de trabajo casi puramente de solo lectura. Recientemente, descubrimos que io se bloquea o se detiene cada 1 minuto durante aproximadamente 2 a 3 segundos. ¿Alguien sabe por qué sucede esto y cómo evitar que ocurra?

pool: data

state: ONLINE

status: The pool is formatted using a legacy on-disk format.  The pool can
        still be used, but some features are unavailable.

action: Upgrade the pool using 'zpool upgrade'.  Once this is done, the
        pool will no longer be accessible on software that does not support feature
        flags.

scan: none requested

config:

        NAME                       STATE     READ WRITE CKSUM
        data01                     ONLINE       0     0     0
          raidz1-0                 ONLINE       0     0     0
            c6t5E83A97A6BAB722Fd0  ONLINE       0     0     0
            c6t5E83A97BBE7FE8F1d0  ONLINE       0     0     0
            c6t5E83A97CB2D1609Fd0  ONLINE       0     0     0
            c6t5E83A97E0D2BC6ACd0  ONLINE       0     0     0
            c6t5E83A97E1E2A6F66d0  ONLINE       0     0     0
            c6t5E83A97E4C627FC0d0  ONLINE       0     0     0
            c6t5E83A97E44EB7FC0d0  ONLINE       0     0     0
            c6t5E83A97E124F8168d0  ONLINE       0     0     0
            c6t5E83A97E86762E4Dd0  ONLINE       0     0     0
            c6t5E83A97E25716311d0  ONLINE       0     0     0
            c6t5E83A97EBEEB8B60d0  ONLINE       0     0     0
            c6t5E83A97FCF5551F5d0  ONLINE       0     0     0

errors: No known data errors

Según lo solicitado por @jlliagre, aquí están los resultados de llamar a hotkernel durante los buenos y malos momentos.

Buenos tiempos

  • zfs`vdev_is_dead 1 0.0%
  • ip`conn_ip_output 1 0,0%
  • sd`sdintr 1 0,0%
  • mpt_sas`mptsas_start_cmd0 1 0,0%
  • genunix`new_mstate 1 0.0%
  • genunix`segvn_faulta 1 0.0%
  • interruptor unix 1 0.0%
  • unix`tsc_scalehrtime 1 0.0%
  • zfs`ddt_stat_add 1 0,0%
  • unix`lwp_segregs_save 1 0,0%
  • rootnex`rootnex_get_sgl 1 0,0%
  • genunix`ldi_strategy 1 0.0%
  • mpt_sas`mptsas_scsi_init_pkt 1 0,0%
  • genunix`ddi_fm_dma_err_get 1 0.0%
  • zfs`zio_create 1 0.0%
  • zfs`zio_destroy 1 0.0%
  • unix`strcmp 1 0.0%
  • unix`cpu_acpi_idle 1 0,0%
  • ip`ip_xmit_attach_llhdr 1 0,0%
  • genunix`mdi_pi_get_vhci_private 1 0.0%
  • genunix`lbolt_event_driven 1 0.0%
  • unix`disp 1 0.0%
  • genunix`cpu_update_pct 1 0.0%
  • unix`tsc_gethrtime 1 0.0%
  • ip`tcp_build_hdrs 1 0,0%
  • genunix`dnlc_lookup 1 0.0%
  • unix`page_create_va 1 0,0%
  • genunix`kmem_zalloc 1 0.0%
  • unix`mmapobj_map_elf 1 0.0%
  • bnx`bnx_intr_1lvl 1 0,0%
  • genunix`btopr 1 0.0%
  • genunix`fsflush 1 0.0%
  • genunix`gexec 1 0.0%
  • unix`mmu_tlbflush_entry 1 0,0%
  • unix`hment_alloc 1 0.0%
  • specfs`spec_lockcsp 1 0,0%
  • zfs`vdev_stat_update 1 0,0%
  • genunix`stk_getptr 1 0.0%
  • unix`resume 1 0.0%
  • unix`do_splx 1 0.0%
  • unix`page_clr_all_props 1 0,0%
  • bnx`bnx_xmit_ring_xmit_mblk 1 0.0%
  • genunix`list_create 1 0.0%
  • scsi`scsi_uscsi_handle_cmd 1 0,0%
  • unix`page_lookup_nowait 1 0,0%
  • genunix`syscall_mstate 1 0.0%
  • genunix`kmem_free 1 0.0%
  • genunix`as_map_locked 1 0.0%
  • unix`cpu_idle_adaptive 1 0,0%
  • unix`page_lookup_create 1 0,0%
  • sd`sd_start_cmds 1 0,0%
  • unix`0xffffffffb85 1 0,0%
  • unix`atomic_cas_64 1 0.0%
  • genunix`restorectx 1 0.0%
  • genunix`vmem_is_populator 1 0.0%
  • unix`disp_anywork 1 0,0%
  • unix`prefetch_page_r 1 0,0%
  • sd`xbuf_iostart 1 0,0%
  • zfs`zfs_read 1 0.0%
  • unix`hwblkclr 1 0.0%
  • specfs`sfind 1 0.0%
  • genunix`swapfs_getvp 1 0.0%
  • zfs`vdev_cache_allocate 1 0,0%
  • zfs`buf_hash_find 1 0.0%
  • genunix`taskq_thread 2 0.0%
  • unix`tsc_read 2 0.0%
  • unix`tsc_gethrtimeunscaled 2 0.0%
  • genunix`fop_getpage 2 0.0%
  • unix`inflate_table 2 0.0%
  • unix`ddi_get32 2 0.0%
  • unix`mutex_exit 2 0.0%
  • unix`inactivo 3 0.0%
  • zfs`lzjb_compress 3 0.0%
  • unix`mutex_enter 6 0,1%
  • unix`page_nextn 9 0,1%
  • genunix`fsflush_do_pages 9 0,1%
  • unix`disp_getwork 12 0,2%
  • unix`acpi_cpu_cstate 441 5,7%
  • unix`i86_mwait 7118 92,7%

malos tiempos

  • genunix`cpu_update_pct 1 0.0%
  • unix`splr 1 0.0%
  • bnx`bnx_timer 1 0,0%
  • unix`av_check_softint_pending 1 0,0%
  • genunix`devid_str_decode_id 1 0,0%
  • pcplusmp`apic_send_ipi 1 0.0%
  • genunix`callout_downheap 1 0.0%
  • unix`prefetch_page_r 1 0,0%
  • dtrace`dtrace_state_clean 1 0,0%
  • genunix`fsflush 1 0.0%
  • unix`link_ptp 1 0,0%
  • ip`ip_input_cksum_v4 1 0,0%
  • ip`tcp_timer_callback 1 0.0%
  • unix`page_pptonum 1 0.0%
  • unix`do_splx 1 0.0%
  • unix`page_nextn 5 0,1%
  • genunix`fsflush_do_pages 6 0,1%
  • unix`acpi_cpu_cstate 782 17,7%
  • unix`i86_mwait

Respuesta1

Quizás haya algún problema con la administración de energía en su máquina.

Intente deshabilitarlo agregando la siguiente línea al /etc/power.confarchivo

cpupm disable

próxima ejecución

pmconfig

y vea si el comportamiento de E/S cambia.


Actualizar:

Como deshabilitar la administración de energía no cambia nada, el hecho es que el kernel está esencialmente inactivo durante los "malos tiempos" con cero actividad ZFS.

Entonces inferiría que la aplicación no está vinculada a E/S y simplemente está haciendo otra cosa durante estos períodos de tiempo.

Respuesta2

Bueno, hay algunas cosas mal aquí...

  • Su versión de zpool es antigua. zpool upgradearreglará eso.
  • El diseño de la piscina no se presta a un alto rendimiento. Tiene el potencial de IOPS efectivo deunodisco. (este es probablemente el mayor problema aquí)
  • Tiene demasiadas unidades en su RAIDZ1. No deberías pasar de 7...
  • Es probable que existan otros ajustes que puedan ayudar en este caso. Puedes mostrar zfs list?

Tome una lectura de:http://nex7.blogspot.com/2013/03/readme1st.htmlpara obtener pautas más generales.

información relacionada