작업 z_input이 120초 이상 차단되었습니다.

작업 z_input이 120초 이상 차단되었습니다.

zfs를 사용하여 가상 머신 백업을 저장하는데 동시에 여러 작업을 실행하면 dmesg에 나타나는 경우가 있습니다.

INFO: task z_iput:63527 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
z_iput          D ffff9c0add81a080     0 63527      2 0x00000080
Call Trace:
 [<ffffffffb5567c49>] schedule+0x29/0x70
[<ffffffffc09592d5>] cv_wait_common+0x125/0x150 [spl]
[<ffffffffb4ec2d00>] ? wake_up_atomic_t+0x30/0x30
[<ffffffffc0959315>] __cv_wait+0x15/0x20 [spl]
[<ffffffffc0acf493>] txg_wait_open+0xc3/0x110 [zfs]
[<ffffffffc0a70d1f>] dmu_free_long_range+0x27f/0x460 [zfs]
[<ffffffffc096c77a>]  ? avl_add+0x4a/0x80 [zavl]
[<ffffffffc0af7cf5>] zfs_rmnode+0x2a5/0x360 [zfs]
[<ffffffffc0b19a3f>] ? zfs_znode_hold_exit+0xff/0x130 [zfs]
[<ffffffffc0b1deda>] zfs_zinactive+0xda/0xf0 [zfs]
[<ffffffffc0b15757>] zfs_inactive+0x87/0x200 [zfs]
[<ffffffffb4fc72f9>] ? truncate_pagecache+0x59/0x60
[<ffffffffc0b30463>] zpl_evict_inode+0x43/0x60 [zfs]
[<ffffffffb505eaa4>] evict+0xb4/0x180
[<ffffffffb505f3ac>] iput+0xfc/0x190
[<ffffffffc0954d7c>] taskq_thread+0x2ac/0x4f0 [spl]
[<ffffffffb4ed67b0>] ? wake_up_state+0x20/0x20
[<ffffffffc0954ad0>] ? taskq_thread_spawn+0x60/0x60 [spl]
[<ffffffffb4ec1c31>] kthread+0xd1/0xe0
[<ffffffffb4ec1b60>] ? insert_kthread_work+0x40/0x40
[<ffffffffb5574c1d>] ret_from_fork_nospec_begin+0x7/0x21
[<ffffffffb4ec1b60>] ? insert_kthread_work+0x40/0x40

이것에 대해 걱정해야합니까? 원인이 무엇인지 어떻게 알 수 있나요?

답변1

따라서 메시지는 일부 ZFS 스레드가 몇 분 동안 차단되었다는 것만 알려줄 뿐 무엇이 차단했는지는 알려주지 않습니다. 이들 중 대부분은 일시적인 "리소스 부족" 상황을 유발하는 높은 부하로 인해 발생합니다.

귀하가 게시한 특정 스택 추적을 보면 ZFS가 inode를 제거하려고 시도하는 것 같습니다(아마도 파일이 삭제된 후일까요?). 그렇게 하려면 새 트랜잭션 그룹이 열릴 때까지 기다려야 하는 것 같습니다. 이는 초기에 작성하는 데 시간이 오래 걸린다는 의미일 수 있는데 txg, 이는 IO가 많아 txg다 작성하는 데 시간이 오래 걸리기 때문일 수 있습니다.

그것이 문제인지 여부에 관해서는, 그것이 명백한 성능 문제를 일으키는 경우에만 중요하다고 말하고 싶습니다. 자주 표시되지만 해당 성능 문제가 표시되지 않는 경우 메시지 자체의 제안을 사용하여 제거하는 것이 안전할 수 있습니다.

관련 정보