ZFS on Linux performance tuning when zfs_iput_taskq take near 100% CPU

一台机子的zfs_iput_taskq进程CPU占用100%. 

处理方法 :

# cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=10240000000

# zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
zp1          548M   267G   136K  /zp1
zp1/data01   302M   267G   302M  /data01
zp1/pg_log   980K   267G   980K  /pg_log
zp1/site     234M   267G   234M  /site
# zfs set xattr=sa zp1
# zfs set xattr=sa zp1/data01
# zfs set xattr=sa zp1/pg_log
# zfs set xattr=sa zp1/site

# vi /etc/sysctl.conf
vm.swappiness = 10
vm.min_free_kbytes = 512000

reboot

参考

ZFS on Linux needs a bit of basic tuning in order to operate well under load. There's a bit of a struggle between the ZFS ARC and the Linux virtual memory subsystem.

For your CentOS systems, try the following:

Create an /etc/modprobe.d/zfs.conf configuration file. This is read during the module load/boot.

Add something like:

options zfs zfs_arc_max=40000000000
options zfs zfs_vdev_max_pending=24
Where zfs_arc_max is roughly 40% of your RAM in bytes (Edit: try zfs_arc_max=1200000000). The compiled-in default for zfs_vdev_max_pending is 8 or 10, depending on version. The value should be high (48) for SSD or low-latency drives. Maybe 12-24 for SAS. Otherwise, leave at default.

You'll want to also have some floor values in /etc/sysctl.conf

vm.swappiness = 10
vm.min_free_kbytes = 512000
Finally, with CentOS, you may want to install tuned and tuned-utils and set your profile to virtual-guest with tuned-adm profile virtual-guest.

Try these and see if the problem persists.

Edit:

Run zfs set xattr=sa storage. Here's why. You may have to wipe the volumes and start again (I'd recommend).

[参考]
1. https://github.com/zfsonlinux/zfs/issues/457

2. http://serverfault.com/questions/583630/gluster-zfs-deadlock-during-benchmarking-zfs-iput-taskq-100-cpu?rq=1

时间: 2024-12-30 03:13:24

ZFS on Linux performance tuning when zfs_iput_taskq take near 100% CPU的相关文章

kvm performance tuning for qemu-kvm daemon's high cpu usage

昨天写了两篇关于kvm虚拟机安装的文章 http://blog.163.com/digoal@126/blog/static/16387704020153142253971/ http://blog.163.com/digoal@126/blog/static/1638770402015315195563/ 在装好后, 发现一个问题, 即使我的虚拟机上没跑任何用户进程, 在宿主机上对应的qemu-kvm进程的CPU利用率也有9.0左右. 删掉一些不必要的控制器(如USB), 然后添加CPU模块,

ZFS (sync, async) R/W IOPS / throughput performance tuning

本文讨论一下zfs读写IOPS或吞吐量的优化技巧, (读写操作分同步和异步两种情况). 影响性能的因素 1. 底层设备的性能直接影响同步读写 iops, throughput. 异步读写和cache(arc, l2arc) 设备或配置有关. 2. vdev 的冗余选择影响iops, through. 因为ZPOOL的IO是均分到各vdevs的, 所以vdev越多, IO和吞吐能力越好. vdev本身的话, 写性能 mirror > raidz1 > raidz2 > raidz3 , 

30 分钟快快乐乐学 SQL Performance Tuning

有些程序员在撰写数据库应用程序时,常专注于 OOP 及各种 framework 的使用,却忽略了基本的 SQL 语句及其「性能 (performance) 优化」问题.版工曾听过台湾某半导体大厂的新进程序员,所组出来的一段 PL/SQL 跑了好几分钟还跑不完:想当然尔,即使他的 AJAX 及 ooxx 框架用得再漂亮,系统性能也会让使用者无法忍受.以下是版工整理出的一些数据库规划.SQL performance tuning 简单心得,让长年钻研 .NET.AJAX.一堆高深 ooxx fram

ZFS On Linux 现状,是否足够稳定了?

ZFS on Linux是否稳定了?代码递交数排在第二位的ZFSOnLinux项目开发者Richard Yao的回答是"是的"--根据你对稳定的定义而定.稳定的意义是模糊的,其中一种意义是"做好了在生产环境使用的准备",即数据不会丢失,不会崩溃,是现有文件系统的"即插即用"替代,磁盘格式向前兼容,完美更新,等等.Richard Yao相信ZFS on Linux已经做好了生产准备,关键的数据完整性功能能有效工作,Linux上的ZFS运行时稳定性与

Suse Linux zmd 耗用100% CPU

    最近的Suse Linux 10(SP3)的top命令总是显示zmd进程耗用了100%的CPU资源,而整个系统中system级别占用CPU则占用了40%以上且根本不曾释放.尝试重启服务器之后,故障依旧.下面是这个问题的描述与处理. 1.top命令显示zmd cpu占用100%,system usage 40%以上top - 09:55:10 up 33 days, 13:44,  4 users,  load average: 1.09, 1.12, 1.06Tasks: 217 tot

Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity)

转载 - Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity) 作者 digoal 日期 2016-11-20 标签 Linux , IRQ , 中断 , CPU亲和 , 绑定中断处理CPU 背景 原文 http://www.vpsee.com/2010/07/load-balancing-with-irq-smp-affinity/ 原文 硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理

ZFS fsync IOPS performance in FreeBSD

我在上一篇文章讲了一下ZFS的性能优化. 文章提到在Linux (CentOS 6.5 x64)中, ZFS的fsync调用性能不佳的问题, 完全不如ext4, 于是在同一台主机, 我安装了FreeBSD 10 x64. 使用同样的硬件测试一下fsync的性能. PostgreSQL的安装参考 http://blog.163.com/digoal@126/blog/static/163877040201451181344545/ http://blog.163.com/digoal@126/bl

Linux下使用python调用top命令获得CPU利用率_python

本文定位:想通过python调用top命令获取cpu使用率但暂时没有思路的情况. 如果单纯为了获得cpu的利用率,通过top命令重定向可以轻松实现,命令如下: 复制代码 代码如下: top -bi > cpuHistory.log 或 复制代码 代码如下: top -bi | tee  cpuHistory.log 这个就不解释了,不懂的朋友查询下top的帮助文档.这里要实现的是通过python调用top命令,并获得cpu的利用率信息. 用过popen的朋友很快就能想到类似如下的代码(这个是我第

这是一篇最通熟易懂的性能调优总结!

精彩早知道 作者概述 什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么人来进行性能调优?(who) 怎么样进行性能调优?(How) 总结 硬件配置:CUP Xeon E5620 x 2 8核心, 内存 16G , 硬盘 RAID 10 操作系统: CentOS 6.4 x86_64(64位)  一.作者概述 在这篇博文中,我不想用一些抽象的概念去说性能调优的问题,只想用最通俗的语言尽量来准确的表达我的想法