SPECjAppServer ได้สูงสุด ก็เลยตามเข้าไปดู
ที่ได้ติดมือมาก็คือได้เห็น tuning parameter ที่เขาใช้
เลยขอ Note ไว้เพื่อไปศึกษาต่อ โดยดูเฉพาะของ WebSphere ก่อน
WebSphere 's Parameters
MaxConnectBacklog = 1024
จำนวน connection ที่ยอมให้ค้างอยู่ใน buffer
ก่อนที่ server จะ reject ทิ้ง
ค่า default อยู่ที่ 511
Note: ค่านี้ไม่ได้สัมพันธ์กับจำนวน user แบบ 1:1
เพราะว่า browser สามารถเปิด connection ได้หลาย thread พร้อมกัน
MaxKeepAliveRequests = 10
ค่านี้น่าสนใจ (อาจจะตั้งน้อยเพราะเหมาะกับธรรมชาติของ benchmark นี้)
ในคุ่มือ ibm แนะนำไว้ว่าควรมีค่า = 90% ของ web container thread pool
่ใน benchmark นี้ ibm ตั้งไว้ที่ 10 (คิดเป็น 20 % ของ Maximum Thread pool)
2 ค่านี้ search หาใน internet ไม่เจอ
com.ibm.ws.pm.batch=true
com.ibm.ws.pm.deferredcreate=true
Linux 's Parameters
ของ Ibm SีuSE มีการ config sysctl.conf
net.core.netdev_max_backlog = 600
net.core.somaxconn = 1024
ตั้ง backlog ให้เยอะขึ้น (ใครเก่ง network ช่วยบอกด้วยว่า
ไอ้ 2 ค่าบนนี้มันต่างกันอย่างไร)
ส่วนใน BEA config เล่นตั้ง 2 ค่านี้ซะเวอร์เลย ตั้งไว้ตั้ง 20000
net.ipv4.tcp_fin_timeout = 30
ตั้งค่าน้อยๆเพื่อให้ reuse resource ได้เร็วขึ้น
kernel.shmmax=1073741824
ส่วนนี้เกี่ยวกับ Heapsize ของ Virtual Machine ด้วย
ในคุ่มือ Websphere แนะไว้ว่า
Set the maximum shared segment size to 2300MB plus a little more (about 95MB) (2511724800 = 2300 * 1048576 + 100000000)
(default ของ kernel คือ 32 Mb)
อ่านดูในเอกสาร ส่วนใหญ่มักจะเปลี่ยนให้ค่า shmall เป็นค่าเดียวกันด้วย
แต่ใน config นี้ไม่ได้พูดถึงค่านี้
(ฺBEA ตั้งค่านี้ไว้ 4294967295)
kernel.sched_yield_scale=1
ค่านี้เป็นเรื่องของ SuSE โดยเฉพาะ กรณี SuSE version < 8 SP2A
vm.bdflush=100 1200 128 512 15 5000 100 0 0
ค่านี้เกี่ยวกับ virtual memory
เห็นในเอกสาร Securing and Optimizing Linux บอกไว้ว่าใน redhat default ตั้งค่านี้ไว้ที่
40 500 64 256 500 3000 500 1884 2
ตัวเลขตัวแรกคือ % ของ dirty cache ก่อนที่จะ flush
Setting this to a high value means that Linux can delay disk writes for a long time
ตัวเลขที่ 2 คือ maximum number of dirty buffers that bdflush can write to the disk in one time
ตัวที่ 3 คือ This is the number of buffers that bdflush will add to the list of free buffers when refill_freelist() is called.
ตัวที่ 4 ไม่ค่อยต่างกัน เลยไม่สนใจ
ตัวที่ 5 นี่เกีี่ยวกับ age_buffer ลดลงเยอะมากเลย
อันนี้งงๆ เพราะหน่วงเวลาการ write ด้วย parameter ตัวที่ 1
แต่กลับให้ age_buffer มีอายุน้อยลง
net.ipv4.tcp_synack_retries = 20
fs.file-max=65535
net.ipv4.tcp_sack=0
net.ipv4.tcp_timestamps=0
2 อันหลังนี้รู้สึกจะปิด feature บางอย่างลงไป
ค่าที่เกี่ยวกับ network ลองอ่านเพิ่มเติมได้จาก
Squeeze Your Gigabit NIC for Top Performance
How to achieve Gigabit speeds with Linux
Enabling High Performance Data Transfers
http://www.bur.st/~paul/linux_tuning.txt
ถ้าใครอยากลอง run benchmark นี้บนเครื่องตัวเองบ้าง
ก็เพียงแต่แคะกระปุกออกมา $2000 เท่านั้นเอง
No comments:
Post a Comment