SUSE LINUX Enterprise & openSUSE Community
มีนาคม 21, 2019, 12:46:23 PM *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
   หน้าแรก   ช่วยเหลือ ค้นหา เข้าสู่ระบบ สมัครสมาชิก  

[Why we need your support] SUSE and openSUSE are trademarks of Attachmate Group, Inc. - WE ARE NOT IN ANY WAY ASSOCIATED WITH SUSE AND ATTACHMATE GROUP. is a SUSE Linux user and community found in Thailand but not limited to other country suse linux user to join in. Currently active contents (How to's, Scripts, Tips, Tricks, Tutorials, Linux Command Line, and Troubleshooting) this suse linux how to's and expert support are SUSE Linux.
หน้า: [1]   ลงล่าง
หัวข้อ: Tuning performance ให้กับ Linux kernel virtual memory (VM subsystem)  (อ่าน 1671 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Expert : ผู้เชี่ยวชาญ

Karma: +1/-0
ออฟไลน์ ออฟไลน์

กระทู้: 1931


« เมื่อ: พฤษภาคม 19, 2012, 05:37:24 PM »

Tuning performance ให้กับ Linux kernel virtual memory (VM subsystem) vm.dirty_ratio และ vm.dirty_background_ratio

ปัญหาที่พบ Low write performance on SLES 11 servers with large RAM

ค่า default บน SUSE Linux Enterprise Server 11 และ SUSE Linux Enterprise Server 11 Service Pack 1

ตัวอย่าง SLES 11 + 2GB of Memory

sysctl vm.dirty_ratio

ค่าที่ได้ vm.dirty_ratio = 40

sysctl vm.dirty_background_ratio

ค่าที่ได้ vm.dirty_background_ratio = 10

vm.dirty_ratio = 40
หมายความว่า ข้อมูลจะถูกเขียนลงในหน่วยความจำระบบ (system memory) จนกว่าแคชของระบบไฟล์ (file system cache) มีขนาด 40% ของแรมในเซิร์ฟเวอร์ ดังนั้นถ้าเซิร์ฟเวอร์มีแรม 2GB ข้อมูลก็จะถูกเขียนลงในหน่วยความจำระบบ (RAM) จนกว่าแคชของระบบไฟล์จะมีขนาดเท่ากับ 0.8GB (819.2MB)

การคำนวณ ให้เอา 40x2/100 = 0.8GB

ดังนั้นเราความปรับเปลี่ยนค่า vm.dirty_ratio และ dirty_background_ratio เมื่อแรมเยอะ (for large RAM) โดยที่ dirty_background_ratio = 1/2 ของ dirty_ratio

echo 10 > /proc/sys/vm/dirty_ratio

echo 5 > /proc/sys/vm/dirty_background_ratio




SUSE Linux Enterprise Server 11
SUSE Linux Enterprise Server 11 Service Pack 1


Low performance, especially involving writing of data to files over NFS, may occur on SLES 11 servers with large amounts of RAM.


For performance reasons, written data goes into a cache before being sent to disk.  The cache of data waiting to be written is called "dirty cache".  There are some tunable settings which influence how the Linux kernel deals with dirty cache.  The defaults for these settings are chosen for average workloads on average servers.  However, technology changes quickly and the amount of RAM in an "average" server is not easily predictable.
These settings sometimes have to be increased for performance reasons.  However, if a server has more than 8 to 16 GB of RAM, there may also be cases were they should be decreased.  This appears to be especially necessary when an application is writing large amounts of to a file system which is actually over a network -- for example, an application writing to and NFS mount point, which then has to transfer the data to an NFS server.
The following tunable settings may be relevant:
Maximum percentage of dirty system memory (default 40).
When this percentage of memory is hit, processes will not be allowed to write more until some of their cached data is written out.  This ensures that the ratio is kept under control.  By itself, that can slow down writes noticeably, but not tremendously.  However, if an application has written a large amount of data which is still in the dirty cache, and then issues a "sync" command to have it all written to disk, this can cause a significant amount of time to accomplish -- especially if the data has to be written over the network.
Therefore, on large memory servers (especially on NFS clients or other types of network file systems), this setting may need to be reduced in order for dirty cache size to stay smaller, so it can still undergo a full sync without long delays.  A setting of 10 may be appropriate to test, but a broad range of experimentation may be enlightening.
Percentage of dirty system memory at which background writeback will start (default 10).
"Background" writes are kicked off to get writing done even when the application isn't forcing a sync, or the dirty_ratio has not yet been reached.   This hopefully keeps the dirty cache from growing too large.  Sometimes this setting may need to be reduced, sometimes increased.  When reducing dirty_ratio to 10, it can be common to reduce dirty_background_ratio to 5 or lower.  Rule of thumb:  dirty_background_ratio = 1/2 or less of the dirty_ratio.
These limits can be observed or modified with the sysctl utility (see man pages for sysctl(เจ๋ง, sysctl.conf(5)).
If desired, rather than setting the parameters "permanently" in sysctl.conf, they can be changed immediately but only in effect until reboot (or resetting), with the method following example method:
echo 10 > /proc/sys/vm/dirty_ratio
echo 5 > /proc/sys/vm/dirty_background_ratio

ที่มา -
« แก้ไขครั้งสุดท้าย: พฤษภาคม 21, 2012, 03:24:09 PM โดย Sontaya » แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

ageLOC Technology
หน้า: [1]   ขึ้นบน

(@)2007 SUSE Linux user community found in Thailand. This site is not an official openSUSE and SUSE website, and is not in any way affiliated with or endorsed by SUSE Linux GmbH or Novell. openSUSE and SUSE are trademarks of Novell, Inc. in the United States and other countries.
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!
หน้านี้ถูกสร้างขึ้นภายในเวลา 0.044 วินาที กับ 18 คำสั่ง (Pretty URLs adds 0.01s, 2q)