พารามิเตอร์การปรับแต่ง TCP/IP ทั้งหมดอยู่ในไดเร็กทอรี /proc/sys/net/ ตัวอย่างเช่น ต่อไปนี้เป็นพารามิเตอร์การปรับแต่งที่สำคัญที่สุด ตามด้วยความหมาย:
1. /proc/sys/net/core/rmem_max — บัฟเฟอร์การรับข้อมูล TCP สูงสุด
2. /proc/sys/net/core/wmem_max — บัฟเฟอร์การส่งข้อมูล TCP สูงสุด
3. /proc/sys/net/ipv4/tcp_timestamps — การประทับเวลาจะถูกเพิ่มลงในส่วนหัว TCP 12 ไบต์ (โปรดอ้างอิง RFC 1323)
4. /proc/sys/net/ipv4/tcp_sack — การตอบสนองแบบเลือก
5. /proc/sys/net/ipv4/tcp_window_scaling — รองรับหน้าต่าง TCP ที่ใหญ่กว่า หากหน้าต่าง TCP สูงสุดเกิน 65535 (64K) ค่านี้จะต้องตั้งค่าเป็น 1
6. rmem_default — ขนาดหน้าต่างรับเริ่มต้น
7. rmem_max — ขนาดสูงสุดของหน้าต่างการรับ
8. wmem_default — ขนาดหน้าต่างการส่งเริ่มต้น
9. wmem_max — ขนาดสูงสุดของหน้าต่างการส่ง
เนื้อหาทั้งหมดในไดเร็กทอรี /proc เป็นเพียงเนื้อหาชั่วคราว ดังนั้นการเปลี่ยนแปลงใดๆ จะหายไปหลังจากรีสตาร์ทระบบ
ขอแนะนำให้แก้ไขพารามิเตอร์ TCP/IP โดยอัตโนมัติเมื่อระบบเริ่มทำงาน:
เพิ่มโค้ดต่อไปนี้ลงในไฟล์ /etc/rc.local จากนั้นบันทึกไฟล์ พารามิเตอร์ TCP/IP ต่อไปนี้จะถูกแก้ไขโดยอัตโนมัติเมื่อระบบรีบูต:
เสียงสะท้อน 256960 > /proc/sys/net/core/rmem_default
เสียงสะท้อน 256960 > /proc/sys/net/core/rmem_max
เสียงสะท้อน 256960 > /proc/sys/net/core/wmem_default
เสียงสะท้อน 256960 > /proc/sys/net/core/wmem_max
เสียงก้อง 0 > /proc/sys/net/ipv4/tcp_timestamps
เสียงก้อง 1 > /proc/sys/net/ipv4/tcp_sack
เสียงก้อง 1 > /proc/sys/net/ipv4/tcp_window_scaling
พารามิเตอร์ TCP/IP อธิบายได้ในตัว ขนาดหน้าต่าง TCP ตั้งค่าเป็น 256960 การประทับเวลา TCP ถูกปิดใช้งาน (ยกเลิกการเพิ่ม 12 ไบต์ในแต่ละส่วนหัวของแพ็กเก็ต) หน้าต่าง TCP ที่ใหญ่ขึ้น และการตอบกลับแบบเลือก TCP ได้รับการสนับสนุน
ค่าข้างต้นถูกตั้งค่าตามการเชื่อมต่ออินเทอร์เน็ตและอัตราแบนด์วิธ/เวลาแฝงสูงสุด
หมายเหตุ: ค่าในตัวอย่างข้างต้นสามารถใช้ได้ในทางปฏิบัติ แต่จะรวมเพียงส่วนหนึ่งของพารามิเตอร์เท่านั้น
วิธีอื่น: ใช้ /etc/sysctl.conf เพื่อกำหนดค่าพารามิเตอร์ให้เป็นค่าที่คุณตั้งไว้เมื่อระบบเริ่มทำงาน:
net.core.rmem_default = 256960
net.core.rmem_max = 256960
net.core.wmem_default = 256960
net.core.wmem_max = 256960
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1
-------------------------------------------------- -------------------------------------------------- ---------------
/proc/sys/fs/super-max
ไฟล์นี้ระบุจำนวนสูงสุดของตัวจัดการซูเปอร์บล็อก ระบบไฟล์ใดๆ ที่ถูกเมาท์จำเป็นต้องใช้ superblock ดังนั้นหากมีการติดตั้งระบบไฟล์จำนวนมาก ตัวจัดการ superblock อาจจะหมดลง
การตั้งค่าเริ่มต้น: 256
/proc/sys/fs/super-nr
ไฟล์นี้แสดงจำนวนซูเปอร์บล็อกที่ได้รับการจัดสรรในปัจจุบัน ไฟล์นี้เป็นแบบอ่านอย่างเดียวและใช้สำหรับแสดงข้อมูลเท่านั้น
/proc/sys/kernel
/proc/sys/เคอร์เนล/acct
ไฟล์นี้มีค่าที่กำหนดค่าได้สามค่าที่ควบคุมเมื่อกระบวนการบัญชีเริ่มต้นตามจำนวนพื้นที่ว่าง (แสดงเป็นเปอร์เซ็นต์) ในระบบไฟล์ที่มีบันทึก:
ถ้าพื้นที่ว่างต่ำกว่าค่าเปอร์เซ็นต์นี้ ให้หยุดกระบวนการบัญชี
หากพื้นที่ว่างสูงกว่าค่าเปอร์เซ็นต์นี้ ให้เริ่มดำเนินการบัญชี
มีการตรวจสอบค่าสองค่าข้างต้นบ่อยแค่ไหน (เป็นวินาที)
หากต้องการเปลี่ยนค่าในไฟล์นี้ ควรส่งคืนลำดับตัวเลขที่คั่นด้วยช่องว่าง
การตั้งค่าเริ่มต้น: 2 4 30
ค่าเหล่านี้จะทำให้การบัญชีหยุดลงหากมีพื้นที่ว่างในระบบไฟล์น้อยกว่า 2% ที่มีเจอร์นัล และเริ่มการบัญชีอีกครั้งหากมีพื้นที่ว่าง 4% ขึ้นไป การตรวจสอบจะดำเนินการทุกๆ 30 วินาที
/proc/sys/เคอร์เนล/ctrl-alt-del
ไฟล์นี้มีค่าไบนารีที่ควบคุมวิธีที่ระบบตอบสนองเมื่อได้รับคีย์ผสม ctrl+alt+delete สองค่านี้แสดงถึง:
ค่าศูนย์ (0) หมายความว่า ctrl+alt+delete ถูกจับและส่งไปยังโปรแกรม init ซึ่งจะทำให้ระบบปิดและรีสตาร์ทได้อย่างสวยงาม เช่นเดียวกับที่คุณป้อนคำสั่งปิดระบบ
ค่าหนึ่ง (1) หมายความว่าไม่ได้บันทึก ctrl+alt+delete และการปิดระบบที่ไม่สะอาดจะดำเนินการ เหมือนกับว่าปิดเครื่องโดยตรง
การตั้งค่าเริ่มต้น: 0
/proc/sys/kernel/domainname
ไฟล์นี้ช่วยให้คุณสามารถกำหนดค่าชื่อโดเมนเครือข่ายได้ ไม่มีค่าเริ่มต้นชื่อโดเมนอาจมีหรือไม่ได้ตั้งค่าไว้
/proc/sys/เคอร์เนล/ชื่อโฮสต์
ไฟล์นี้อนุญาตให้คุณกำหนดค่าชื่อโฮสต์เครือข่าย ไม่มีค่าเริ่มต้น ชื่อโฮสต์อาจมีหรือไม่มีการตั้งค่าก็ได้
/proc/ss/เคอร์เนล/msgmax
ไฟล์นี้ระบุความยาวสูงสุดของข้อความที่ส่งจากกระบวนการหนึ่งไปยังอีกกระบวนการหนึ่ง การส่งข้อความระหว่างกระบวนการเกิดขึ้นในหน่วยความจำของเคอร์เนล และไม่ได้ถูกสลับไปที่ดิสก์ ดังนั้น หากคุณเพิ่มค่านี้ คุณจะเพิ่มจำนวนหน่วยความจำที่ระบบปฏิบัติการใช้
การตั้งค่าเริ่มต้น: 8192
/proc/sys/เคอร์เนล/msgmnb
ไฟล์นี้ระบุจำนวนไบต์สูงสุดในคิวข้อความ
การตั้งค่าเริ่มต้น: 16384
/proc/sys/เคอร์เนล/msgmni
ไฟล์นี้ระบุจำนวนสูงสุดของ ID การจัดคิวข้อความ
การตั้งค่าเริ่มต้น: 16
/proc/sys/kernel/panic
ไฟล์นี้ระบุระยะเวลาเป็นวินาทีที่เคอร์เนลรอก่อนที่จะรีบูตหากเกิด "เคอร์เนลแพนิก" การตั้งค่าเป็นศูนย์ (0) วินาทีจะปิดการรีบูตในกรณีที่เคอร์เนลตื่นตระหนก
การตั้งค่าเริ่มต้น: 0
/proc/sys/เคอร์เนล/printk
ไฟล์นี้มีค่าตัวเลขสี่ค่าที่กำหนดว่าจะส่งข้อความบันทึกไปที่ใดตามความสำคัญของมัน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระดับบันทึกต่างๆ โปรดอ่าน syslog(2) manpage ค่าสี่ค่าของไฟล์นี้คือ:
ระดับบันทึกของคอนโซล: ข้อความที่มีลำดับความสำคัญสูงกว่าค่านี้จะถูกพิมพ์ไปยังคอนโซล
ระดับการบันทึกข้อความเริ่มต้น: ข้อความที่ไม่มีลำดับความสำคัญจะถูกพิมพ์ด้วยลำดับความสำคัญนี้
ระดับบันทึกคอนโซลขั้นต่ำ: ค่าต่ำสุดที่สามารถตั้งค่าระดับบันทึกคอนโซลได้ (ลำดับความสำคัญสูงสุด)
ระดับบันทึกคอนโซลเริ่มต้น: ค่าเริ่มต้นสำหรับระดับบันทึกคอนโซล
การตั้งค่าเริ่มต้น: 6 4 1 7
/proc/sys/kernel/shmall
ไฟล์นี้คือจำนวนหน่วยความจำที่ใช้ร่วมกันทั้งหมด (เป็นไบต์) ที่มีอยู่ในระบบ ณ เวลาใดก็ตาม
การตั้งค่าเริ่มต้น: 2097152
/proc/sys/เคอร์เนล/shmax
ไฟล์นี้ระบุขนาดสูงสุด (เป็นไบต์) ของเซ็กเมนต์หน่วยความจำที่ใช้ร่วมกันที่เคอร์เนลอนุญาต
การตั้งค่าเริ่มต้น: 33554432
/proc/sys/kernel/shmmni
ไฟล์นี้แสดงถึงจำนวนสูงสุดของเซ็กเมนต์หน่วยความจำแบบแบ่งใช้ที่ใช้สำหรับทั้งระบบ
การตั้งค่าเริ่มต้น: 4096
/proc/sys/เคอร์เนล/sysrq
หากค่าที่ระบุในไฟล์นี้ไม่ใช่ศูนย์ คีย์คำขอระบบจะถูกเปิดใช้งาน
การตั้งค่าเริ่มต้น: 0
/proc/sys/kernel/threads-max
ไฟล์นี้ระบุจำนวนเธรดสูงสุดที่เคอร์เนลสามารถใช้ได้
การตั้งค่าเริ่มต้น: 2048
/proc/sys/net
/proc/sys/net/core/message_burst
เวลา (ใน 1/10 วินาที) ที่ต้องเขียนข้อความเตือนใหม่ ข้อความเตือนอื่น ๆ ที่ได้รับในช่วงเวลานี้จะถูกยกเลิก ใช้เพื่อป้องกันการโจมตีแบบปฏิเสธการบริการที่ใช้โดยบุคคลที่พยายาม "ท่วม" ระบบของคุณด้วยข้อความ
การตั้งค่าเริ่มต้น: 50 (5 วินาที)
/proc/sys/net/core/message_cost
ไฟล์นี้เก็บมูลค่าต้นทุนที่เกี่ยวข้องกับข้อความเตือนแต่ละข้อความ ยิ่งค่ามากขึ้นเท่าใด ข้อความเตือนก็มีแนวโน้มที่จะถูกละเว้นมากขึ้นเท่านั้น
การตั้งค่าเริ่มต้น: 5
/proc/sys/net/core/netdev_max_backlog
ไฟล์นี้ระบุจำนวนแพ็กเก็ตสูงสุดที่ได้รับอนุญาตให้จัดคิวเมื่ออินเทอร์เฟซได้รับแพ็กเก็ตเร็วกว่าที่เคอร์เนลสามารถประมวลผลได้
การตั้งค่าเริ่มต้น: 300
/proc/sys/net/core/optmem_max
ไฟล์นี้ระบุขนาดบัฟเฟอร์สูงสุดที่อนุญาตสำหรับแต่ละซ็อกเก็ต
/proc/sys/net/core/rmem_default
แฟ้มนี้ระบุค่าเริ่มต้นสำหรับขนาดบัฟเฟอร์ซ็อกเก็ตรับในหน่วยไบต์
/proc/sys/net/core/rmem_max
แฟ้มนี้ระบุขนาดบัฟเฟอร์ซ็อกเก็ตรับสูงสุดในหน่วยไบต์
/proc/sys/net/core/wmem_default
แฟ้มนี้ระบุค่าเริ่มต้นสำหรับขนาดบัฟเฟอร์ซ็อกเก็ตการส่งในหน่วยไบต์
/proc/sys/net/core/wmem_max
แฟ้มนี้ระบุขนาดบัฟเฟอร์ซ็อกเก็ตการส่งสูงสุดในหน่วยไบต์
/proc/sys/net/ipv4
พารามิเตอร์ IPv4 และ IPv6 ทั้งหมดได้รับการบันทึกไว้ในเอกสารประกอบซอร์สโค้ดเคอร์เนล ดูไฟล์ /usr/src/linux/Documentation/networking/ip-sysctl.txt
/proc/sys/net/ipv6
เช่นเดียวกับ IPv4
/proc/sys/vm
/proc/sys/vm/buffermem
ไฟล์นี้ควบคุมจำนวนหน่วยความจำระบบโดยรวมที่ใช้สำหรับหน่วยความจำบัฟเฟอร์ (แสดงเป็นเปอร์เซ็นต์) มีค่าสามค่าซึ่งกำหนดโดยการเขียนลำดับตัวเลขที่คั่นด้วยช่องว่างลงในไฟล์
เปอร์เซ็นต์ขั้นต่ำของหน่วยความจำที่ใช้สำหรับบัฟเฟอร์
หากสถานการณ์เกิดขึ้นเมื่อมีหน่วยความจำระบบเหลืออยู่ไม่มากนักและหน่วยความจำระบบกำลังลดลง ระบบจะพยายามรักษาจำนวนหน่วยความจำบัฟเฟอร์ไว้
เปอร์เซ็นต์สูงสุดของหน่วยความจำที่ใช้สำหรับบัฟเฟอร์
การตั้งค่าเริ่มต้น: 2 10 60
/proc/sys/vm/freepages
ไฟล์นี้ควบคุมวิธีที่ระบบตอบสนองต่อระดับต่างๆ ของหน่วยความจำที่มีอยู่ มีค่าสามค่าซึ่งกำหนดโดยการเขียนลำดับตัวเลขที่คั่นด้วยช่องว่างลงในไฟล์
เคอร์เนลได้รับอนุญาตให้จัดสรรหน่วยความจำบางส่วนหากจำนวนเพจที่มีอยู่ในระบบถึงขีดจำกัดขั้นต่ำเท่านั้น
หากจำนวนเพจที่ว่างในระบบต่ำกว่าขีดจำกัดนี้ เคอร์เนลจะเริ่มการสลับในลักษณะที่เข้มงวดมากขึ้นเพื่อเพิ่มหน่วยความจำและรักษาประสิทธิภาพของระบบ
เคอร์เนลจะพยายามรักษาหน่วยความจำระบบจำนวนนี้ไว้ ค่าด้านล่างนี้จะเปิดใช้งานการสลับเคอร์เนล
การตั้งค่าเริ่มต้น: 512 768 1024
/proc/sys/vm/kswapd
ไฟล์นี้ควบคุมวิธีที่เคอร์เนลได้รับอนุญาตให้สลับหน่วยความจำ มีค่าสามค่าซึ่งกำหนดโดยการเขียนลำดับตัวเลขโดยคั่นด้วยช่องว่างลงในไฟล์:
จำนวนเพจสูงสุดที่เคอร์เนลพยายามปล่อยในคราวเดียว หากคุณต้องการเพิ่มแบนด์วิดท์ระหว่างการสลับหน่วยความจำ คุณต้องเพิ่มค่านี้
จำนวนครั้งขั้นต่ำที่เคอร์เนลพยายามทำให้เพจว่างต่อการสลับ
จำนวนหน้าที่เขียนโดยเคอร์เนลในการสลับครั้งเดียว สิ่งนี้มีผลกระทบต่อประสิทธิภาพของระบบมากที่สุด ยิ่งค่านี้มากขึ้น ข้อมูลก็ยิ่งมีการแลกเปลี่ยนมากขึ้นและใช้เวลาในการค้นหาดิสก์น้อยลง อย่างไรก็ตาม ค่าที่มากเกินไปอาจส่งผลเสียต่อประสิทธิภาพของระบบโดยการ "ทำให้" คิวการร้องขอเสียหาย
การตั้งค่าเริ่มต้น: 512 32 8
/proc/sys/vm/pagecache
ไฟล์นี้ทำงานเหมือนกับ /proc/sys/vm/buffermem แต่เป็นแผนผังหน่วยความจำของไฟล์และแคชทั่วไป
ทำให้การตั้งค่าเคอร์เนลคงอยู่
มียูทิลิตี้อำนวยความสะดวกไว้ที่นี่สำหรับการเปลี่ยนพารามิเตอร์เคอร์เนลในไดเร็กทอรี /proc/sys ช่วยให้คุณสามารถเปลี่ยนเคอร์เนลที่ทำงานอยู่ได้ (คล้ายกับวิธีการสะท้อนและการเปลี่ยนเส้นทางที่ใช้ด้านบน) แต่ก็มีไฟล์การกำหนดค่าที่ดำเนินการเมื่อระบบบูท สิ่งนี้ช่วยให้คุณสามารถทำการเปลี่ยนแปลงเคอร์เนลที่ทำงานอยู่และเพิ่มการเปลี่ยนแปลงเหล่านั้นลงในไฟล์การกำหนดค่าเพื่อให้คงอยู่ในระหว่างการรีบูตระบบ
ยูทิลิตี้นี้เรียกว่า sysctl และได้รับการบันทึกไว้อย่างครบถ้วนใน manpage สำหรับ sysctl(8) ไฟล์การกำหนดค่าของ sysctl คือ /etc/sysctl.conf ซึ่งสามารถแก้ไขและบันทึกภายใต้ sysctl.conf(8) sysctl ถือว่าไฟล์ภายใต้ /proc/sys เป็นตัวแปรแต่ละตัวที่สามารถเปลี่ยนแปลงได้ ดังนั้น เมื่อนำไฟล์ /proc/sys/fs/file-max มาไว้ใต้ /proc/sys เป็นตัวอย่าง จะแสดงถึงจำนวนสูงสุดของตัวจัดการไฟล์ที่อนุญาตในระบบ
ตัวอย่างนี้เผยให้เห็นสิ่งมหัศจรรย์บางอย่างเกี่ยวกับสัญกรณ์ sysctl เนื่องจาก sysctl สามารถเปลี่ยนตัวแปรในไดเร็กทอรี /proc/sys เท่านั้น และผู้คนมักคิดว่าตัวแปรอยู่ในไดเร็กทอรีนี้ ส่วนหนึ่งของชื่อตัวแปร (/proc/sys) จึงถูกละไว้ การเปลี่ยนแปลงที่ควรทราบอีกประการหนึ่งคือการแทนที่ตัวคั่นไดเรกทอรี (เครื่องหมายทับ /) ด้วยเครื่องหมายมหัพภาคภาษาอังกฤษ (จุด)
มีกฎง่ายๆ สองข้อในการแปลงไฟล์ใน /proc/sys ให้เป็นตัวแปรใน sysctl:
ถอดส่วนหน้า /proc/sys ออก
เปลี่ยนเครื่องหมายทับในชื่อไฟล์เป็นจุด
กฎสองข้อนี้อนุญาตให้คุณแปลงชื่อไฟล์ใดๆ ใน /proc/sys ให้เป็นชื่อตัวแปรใดๆ ใน sysctl การแปลงไฟล์เป็นตัวแปรโดยทั่วไปคือ:
/proc/sys/dir/file --> dir.file
dir1.dir2.file --> /proc/sys/dir1/dir2/file
คุณสามารถใช้คำสั่ง sysctl -a เพื่อดูตัวแปรทั้งหมดที่สามารถเปลี่ยนแปลงได้และการตั้งค่าปัจจุบัน
ตัวแปรยังสามารถเปลี่ยนแปลงได้โดยใช้ sysctl ซึ่งทำสิ่งเดียวกันกับวิธี echo ที่ใช้ข้างต้นทุกประการ ตัวแทนของมันคือ:
sysctl -w dir.file = "ค่า"
ใช้ file-max เป็นตัวอย่างอีกครั้ง ใช้วิธีใดวิธีหนึ่งจากสองวิธีต่อไปนี้เพื่อเปลี่ยนค่าเป็น 16384