Isilon PowerScale OneFS 8.2 及更高版本:当缓存已满时,允许为新 vnode 放弃可用 vnode
Summary: 当缓存已满时,允许为新的 Vnode 放弃可用虚拟节点 (Vnode)。
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Symptoms
在低 Vnode 上运行通过看到多个
vlruwk 正在运行的线程数:
/var/log/messages 2022-03-11T17:17:01-08:00 <0.4> Isilon-4(id4) /boot/kernel.amd64/kernel: [rbm_worker.c:350](pid 4738="kt: dxt1")(tid=102982) There are now 505 DXT threads, msg stats: READ_INODE: 1, callback stats: kernel:lk_lock_async_callback2+0: 502, wait stats: biord: 3, vlruwk: 507在 vmlog 中,请注意 VNODE 占用的内存最高:
vm.uma_zalloc_pigs: UMA Zalloc Pigs:
ZONE NAME SIZE LIMIT COUNT MEM USED
VNODE 000560, 00000000, 00830165, 00453996K
IFSINODE 000568, 00000000, 00777624, 00431338K
VM OBJECT 000240, 00000000, 00813154, 00190582K
lki_lin_ent 000208, 00000000, 00934988, 00189919K
lkc_gen_ent 000064, 00000000, 02235094, 00139693K
stat_cache 000176, 00000000, 00752869, 00129399K
lki_ref_ent 000105, 00000000, 00936379, 00096015K
lkc_lin_idds 000076, 00000000, 01012017, 00075110K
lkc_ref_idds 000068, 00000000, 01008047, 00066940K
mbuf_jumbo_p 004096, 00000000, 00016394, 00065576K
mbuf_cluster 002048, 00000000, 00026630, 00053260K
RADIX NODE 000144, 00000000, 00308743, 00043416K
ifm_attr_cac 000048, 00000000, 00770256, 00036105K
lki_mds_ent 000144, 00000000, 00255978, 00035996K
UMA Slabs 000080, 00000000, 00239085, 00018678K
Unshown zones account for 174014K
Total: 2200045KCause
由于未回收可用 Vnode,节点可能会耗尽内存 (OOM)。在 OneFS 8.2 及更高版本中,新的 systcl 已实施 (vfs.vnlru_reuse_freevnodes) 以允许在缓存已满时为新的 Vnode 放弃可用的 Vnode。
默认情况下, vnlru_reuse_freevnodes 关闭,因为 Isilon 倾向于将 Vnodes 回收推迟到 vnlru_proc。开启 vnlru_reuse_freevnodes 允许 getvnewvnode() 回收可用的可用 Vnode,以便在缓存已满(但不超过大小)时为新 Vnode 腾出空间。这可防止 Vnode 分配器休眠并避免唤醒 vnlru_proc。
Resolution
注意:在禁用或启用之前获得工程批准
vfs.vnlru_reuse_freevnode。应独立评估所有群集,即使它们是对等群集或灾难恢复群集也是如此。
Process:
- 使用以下命令检查是否设置了值(默认值为 0):
# isi_for_array sysctl vfs.vnlru_reuse_freevnodes
- 已设置
vfs.vnlru_reuse_freevnodes到 1:
# isi_sysctl_cluster vfs.vnlru_reuse_freevnodes=1
- 通过重新运行以下命令验证是否设置了值:
# isi_for_array sysctl vfs.vnlru_reuse_freevnodes要在更改后进行监视,请使用以下命令监视
vnode cache 和 vlurwk 线程:
# isi_for_array -s 'sysctl vfs.numvnodes kern.maxvnodes| xargs'; sleep 300 # isi_for_array -s sysctl kern.malloc_pigs|grep vlurwk
Additional Information
Article Properties
Article Number: 000173892
Article Type: Solution
Last Modified: 18 Jun 2025
Version: 17
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.