คำถามติดแท็ก linux-kernel

เคอร์เนลลินุกซ์เป็นเคอร์เนลของระบบปฏิบัติการที่ใช้โดยระบบปฏิบัติการคล้ายยูนิกซ์ตระกูลลินุกซ์ เป็นหนึ่งในตัวอย่างที่โดดเด่นที่สุดของซอฟต์แวร์ฟรีและโอเพนซอร์ส


2
ผลของการกำหนดค่า vm.overcommit_memory
เว็บเซิร์ฟเวอร์ VPS ของฉันทำงานบน CentOS 5.4 (เคอร์เนล Linux 2.6.16.33-xenU) ไม่สม่ำเสมอ (เช่นเดือนละครั้งให้หรือใช้เวลาสองสามสัปดาห์) จะไม่ตอบสนองเนื่องจากผู้โจมตีใช้งานได้การตรวจสอบเซิร์ฟเวอร์แสดงว่าไม่ ปกติหน่วยความจำไม่เพียงพอทุกครั้ง ฉันได้อ่านบล็อกที่ชี้ไปที่หน้านี้ซึ่งกล่าวถึงการกำหนดค่าเคอร์เนลเพื่อจัดการ overcommit ที่ดีขึ้นโดยใช้การตั้งค่า sysctl ต่อไปนี้: vm.overcommit_memory = 2 vm.overcommit_ratio = 80 ความเข้าใจของฉันเกี่ยวกับเรื่องนี้ (ซึ่งอาจผิด แต่ฉันไม่สามารถหาคำจำกัดความตามกฎหมายเพื่อชี้แจง) คือการป้องกันเคอร์เนลที่จัดสรรหน่วยความจำเกินกว่า swap + 80% ของหน่วยความจำกายภาพ แต่ผมได้อ่านบางแหล่งข้อมูลอื่น ๆ บอกว่าการตั้งค่าเหล่านี้ไม่ได้เป็นความคิดที่ดี - แม้ว่านักวิจารณ์ของวิธีการนี้ดูเหมือนจะบอกว่า "ไม่ได้ทำสิ่งที่จะทำลายระบบของคุณแทนที่จะพยายาม kludge นี้" ในสมมติฐานว่า เป็นที่รู้จักกันเสมอ ดังนั้นคำถามของฉันคืออะไรข้อดีและข้อเสียของวิธีการนี้ในบริบทของเว็บเซิร์ฟเวอร์ Apache2 โฮสติ้งประมาณ 10 ไซต์การจราจรต่ำ? ในกรณีเฉพาะของฉันเว็บเซิร์ฟเวอร์มี 512Mb RAM พร้อมพื้นที่สลับ …

11
ฉันจะทำให้ Linux รู้จักไดรฟ์ SATA / dev / sda ใหม่ที่ฉันสลับร้อนโดยไม่ต้องบูตเครื่องใหม่ได้อย่างไร
การสลับร้อนระหว่างไดรฟ์ SATA / dev / sda ที่ล้มเหลวทำงานได้ดี แต่เมื่อฉันไปแลกเปลี่ยนในไดรฟ์ใหม่มันไม่ได้รับการยอมรับ: [root@fs-2 ~]# tail -18 /var/log/messages May 5 16:54:35 fs-2 kernel: ata1: exception Emask 0x10 SAct 0x0 SErr 0x50000 action 0xe frozen May 5 16:54:35 fs-2 kernel: ata1: SError: { PHYRdyChg CommWake } May 5 16:54:40 fs-2 kernel: ata1: link is slow to …

5
ความหมายของประสิทธิภาพสำหรับไฟล์นับล้านไฟล์ในระบบไฟล์ที่ทันสมัยคืออะไร?
สมมติว่าเรากำลังใช้ ext4 (ด้วย dir_index ที่เปิดใช้งาน) เพื่อโฮสต์ไฟล์ 3M (โดยมีขนาดเฉลี่ย 750KB) และเราจำเป็นต้องตัดสินใจว่าจะใช้รูปแบบโฟลเดอร์ใด ในโซลูชันแรกเราใช้ฟังก์ชันแฮชกับไฟล์และใช้โฟลเดอร์สองระดับ (เป็น 1 ตัวอักษรสำหรับระดับแรกและ 2 ตัวอักษรถึงระดับที่สอง): ดังนั้นการเป็นfilex.forแฮชเท่ากับabcde1234เราจะเก็บไว้ใน / เส้นทาง / a / bc /abcde1234-filex.for ในโซลูชันที่สองเราใช้ฟังก์ชันแฮชกับไฟล์และใช้โฟลเดอร์สองระดับ (เป็น 2 ตัวอักษรสำหรับระดับแรกและ 2 ตัวอักษรถึงระดับที่สอง): ดังนั้นการเป็นfilex.forแฮชเท่ากับabcde1234เราจะเก็บไว้ใน / เส้นทาง / ab / de /abcde1234-filex.for สำหรับวิธีแก้ปัญหาแรกเราจะมีรูปแบบต่อไปนี้ที่/path/[16 folders]/[256 folders]มีค่าเฉลี่ย 732 ไฟล์ต่อโฟลเดอร์ (โฟลเดอร์สุดท้ายที่ไฟล์จะอยู่) ในขณะที่การแก้ปัญหาที่สองเราจะมี/path/[256 folders]/[256 folders]กับค่าเฉลี่ยของ 45 ไฟล์ต่อโฟลเดอร์ พิจารณาว่าเราจะเขียน …

9
จำนวนไฟล์สูงสุดในหนึ่งไดเรกทอรี ext3 ในขณะที่ยังได้รับประสิทธิภาพที่ยอมรับได้?
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Server Fault อพยพ 9 ปีที่ผ่านมา ฉันมีแอปพลิเคชันที่เขียนไปยังไดเรกทอรี ext3 ซึ่งเมื่อเวลาผ่านไปได้ขยายไฟล์เป็นสามล้านไฟล์ จำเป็นต้องพูดการอ่านรายชื่อไฟล์ของไดเรกทอรีนี้ช้าเหลือทน ฉันไม่ตำหนิ ext3 วิธีการแก้ปัญหาที่เหมาะสมจะได้รับที่จะให้รหัสโปรแกรมการเขียนไปยังไดเรกทอรีย่อยเช่นแทนที่จะใช้เท่านั้น./a/b/c/abc.ext./abc.ext ฉันกำลังเปลี่ยนโครงสร้างของไดเรกทอรีย่อยและคำถามของฉันก็คือ: ฉันควรคาดหวังว่าจะมีไฟล์กี่ไฟล์ที่จัดเก็บในไดเรกทอรี ext3 หนึ่งในขณะที่ยังได้รับประสิทธิภาพที่ยอมรับได้? ประสบการณ์ของคุณคืออะไร หรือในคำอื่น ๆ สมมติว่าฉันต้องการเก็บไฟล์สามล้านไฟล์ไว้ในโครงสร้างควรมี./a/b/c/abc.extโครงสร้างในระดับใด? เห็นได้ชัดว่านี่เป็นคำถามที่ไม่สามารถตอบได้อย่างแน่นอน แต่ฉันกำลังมองหาการประเมินสวนบอล

4
การแตกแฟรกเมนต์หน่วยความจำ Linux
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Server Fault อพยพ 9 ปีที่ผ่านมา มีวิธีการตรวจสอบการกระจายตัวของหน่วยความจำบน linux หรือไม่? นี่เป็นเพราะในเซิร์ฟเวอร์ที่ใช้งานมานานบางตัวฉันสังเกตเห็นว่าประสิทธิภาพการทำงานลดลงและหลังจากที่ฉันรีสตาร์ทกระบวนการฉันเห็นประสิทธิภาพที่ดีขึ้น ฉันสังเกตเห็นมันมากขึ้นเมื่อใช้การสนับสนุนลินุกซ์หน้าขนาดใหญ่ - หน้าใหญ่ใน linux มีแนวโน้มที่จะมีการกระจายตัว? ฉันดู / proc / buddyinfo เป็นพิเศษ ฉันต้องการทราบว่ามีวิธีใดที่ดีกว่า (ไม่ใช่แค่คำสั่ง CLI ต่อ se โปรแกรมหรือพื้นหลังทางทฤษฎีจะทำ) เพื่อดู

2
ทำไม CPU ถึงใช้เวลากับ IO (wa)
ฉันรู้ว่าwa(ในtop) วัดเวลาของ CPU ในการรอ I / O หลายบทความบอกว่า แต่ฉันสับสนว่าตามคะแนนความรู้ 2 จุด: หากกระบวนการใช้การเรียกของระบบเพื่ออ่านดิสก์กระบวนการจะถูกบล็อก หากกระบวนการถูกบล็อกจะไม่สามารถกำหนดเวลาทำงานบน CPU ได้ ขวา? ดูเหมือนว่าไม่มีเวลาสำหรับ CPU ที่รอ I / O ... จะเกิดอะไรขึ้น ถ้าฉันแนะนำหนังสือหรือบทความให้ฉันอ่านเพิ่มเติมก็ดีกว่ามาก

1
สาเหตุของการแตกแฟรกเมนต์บนเซิร์ฟเวอร์“ ใหญ่” ที่มี xfs, 20 ดิสก์และ Ceph
ข้อมูลเชิงลึกจากผู้ที่มีประสบการณ์เล็กน้อยในระบบ linux IO จะเป็นประโยชน์ นี่คือเรื่องราวของฉัน: เมื่อเร็ว ๆ นี้นำคลัสเตอร์ Dell PowerEdge rx720xds หกตัวมาให้บริการไฟล์ผ่าน Ceph เครื่องเหล่านี้มี 24 คอร์ในสองซ็อกเก็ตที่มีสองโซน numa และ 70 กิกะไบต์หน่วยความจำคี่ ดิสก์ถูกฟอร์แมตเป็นการบุกค้นของดิสก์หนึ่งแผ่น (เราไม่เห็นวิธีเปิดเผยโดยตรง) เครือข่ายให้บริการโดย mellanox infiniband IP ผ่าน IB (แพ็คเก็ต IP กลายเป็น IB ในเคอร์เนลที่ดินไม่ใช่ฮาร์ดแวร์) เราได้ติดตั้งไดรฟ์ SAS แต่ละตัวไว้ดังนี้: # cat /proc/mounts | grep osd /dev/sdm1 /var/lib/ceph/osd/ceph-90 xfs rw,noatime,attr2,inode64,noquota 0 0 /dev/sdj1 /var/lib/ceph/osd/ceph-87 …

2
เคอร์เนล Linux ตรวจพบความถี่ตัวประมวลผลที่ไม่ถูกต้อง
หลังจากการบู๊ตเย็นของเซิร์ฟเวอร์ Debian 6.0.8 (HP ProLiant) ntpdเล่นความเสียหายด้วยเวลาของระบบ: ชดเชยและกระวนกระวายใจเกี่ยวกับเซิร์ฟเวอร์เวลาอ้างอิงปกติและเชื่อถือได้ซึ่งกำลังเติบโตโดยไม่มีขีด จำกัด (โปรดทราบว่าเซิร์ฟเวอร์ที่เหมือนกันคู่ไม่มีปัญหาเลย) หลังจากความพยายามแก้ไขปัญหาntpdด้านข้างไม่สำเร็จฉันตัดสินใจลองรีบูตและทุกอย่างก็โอเค เพื่อตรวจสอบปัญหาฉันพบความคลาดเคลื่อนนี้ซึ่งสามารถอธิบายปัญหานาฬิกาของฉัน: root@n1:~# zgrep Detected /var/log/dmesg* /var/log/dmesg:[ 0.004000] Detected 2400.110 MHz processor. /var/log/dmesg.0:[ 0.004000] Detected 2383.579 MHz processor. /var/log/dmesg.1.gz:[ 0.004000] Detected 2400.036 MHz processor. /var/log/dmesg.2.gz:[ 0.004000] Detected 2400.298 MHz processor. /var/log/dmesg.3.gz:[ 0.004000] Detected 2400.165 MHz processor. /var/log/dmesg.4.gz:[ 0.004000] Detected 2400.410 MHz …

4
ใน CentOS 6.x ฉันจะอัพเกรดเป็น Kernel 3.4 ได้อย่างไร
ฉันมีเซิร์ฟเวอร์ที่รัน CentOS 6.2 พร้อมเคอร์เนลเวอร์ชัน 2.6.32 แต่ฉันต้องเพิ่มประสิทธิภาพของแอปพลิเคชันของฉัน Kernel เวอร์ชั่น 3.4 มี x32abi ซึ่งสามารถปรับปรุงประสิทธิภาพได้ดังนั้นฉันต้องการอัพเกรดเป็น 3.4? เป็นไปได้ไหม? ฉันพยายามดาวน์โหลดการรวบรวมและติดตั้งเคอร์เนล แต่ก็ยังเห็น Kernel เวอร์ชั่นเดียวกัน .. เกิดอะไรขึ้น ฉันทำตามขั้นตอนที่กล่าวถึงในลิงค์ด้านล่าง http://www.tecmint.com/kernel-3-5-released-install-compile-in-redhat-centos-and-fedora/

2
CoreOS: tcpdump แก้ไขปัญหาเครือข่ายอย่างลึกลับ (ใช้ซ็อกเก็ตจำนวนมากเกินไป)
วันนี้ฉันมีเรื่องลึกลับสำหรับคุณ เราเรียกใช้คลัสเตอร์ Elasticsearch ขนาดเล็กสามโหนดที่ใช้ CoreOS (2023.5.0 / Linux 4.19.25-coreos) บน Azure Elasticsearch ทำงานภายในคอนเทนเนอร์นักเทียบท่าในโหมดโฮสต์เครือข่าย หลังจากใช้งานการบำรุงรักษาเกือบทั้งหมดฟรีเป็นเวลานานกว่าหนึ่งปีเราได้เห็นเครื่องเข้าสู่สถานะที่น่าสนใจมาก ปรับปรุง ปัญหานี้ถูกแก้ไขได้โดยการแก้ไขที่จะขับรถในลินุกซ์เคอร์เนล ดูคำตอบด้านล่าง อาการ โดยพื้นฐานแล้วการเชื่อมต่อระหว่างเครื่องที่ได้รับผลกระทบและอีกสองโหนดจะตาย ทั้งหมดอยู่ในเครือข่ายเสมือนเดียวกันและเครือข่ายย่อยเดียวกันและสามารถสื่อสารกับ eath อื่น ๆ ได้ โหนดที่ได้รับผลกระทบยังสามารถเข้าถึงได้จากเครือข่ายย่อยอื่น ๆ (ฉันสามารถ ssh เข้าไปได้) และจากเครือข่ายเสมือนที่แตกต่างกัน เครื่องยังมีการเชื่อมต่อกับอินเทอร์เน็ต (ขาด ๆ หาย ๆ ) แต่การร้องขอส่วนใหญ่จะหมดเวลา เราสังเกตว่าบนโหนดที่ได้รับผลกระทบจำนวน "ซ็อกเก็ตที่ใช้" ที่รายงานโดย/proc/net/sockstatมีค่าสูงมาก (~ 4.5k แทน ~ 300 บนโหนดที่มีสุขภาพดี) การตรวจสอบแสดงให้เห็นว่าจำนวนนี้เพิ่มขึ้นอย่างรวดเร็วจากช่วงเวลาที่โหนดจะไม่พร้อมใช้งาน สิ่งที่สนุกคือเราไม่สามารถระบุแหล่งที่มาของซ็อกเก็ตที่ใช้แล้ว: # cat …

1
ความแตกต่างระหว่าง net.core.rmem_max และ net.ipv4.tcp_rmem
ความแตกต่างระหว่าง net.core.rmem_max และค่าที่สามของ net.ipv4.tcp_rmem คืออะไร ข้อใดมีความสำคัญสูงกว่าสำหรับการเชื่อมต่อ tcp สำหรับสองตัวอย่างด้านล่างบัฟเฟอร์สูงสุดสำหรับการเชื่อมต่อ tcp คืออะไร Case 1: sysctl -w net.core.rmem_max=7388608 sysctl -w net.ipv4.tcp_rmem='4096 87380 8388608' Case 2: sysctl -w net.core.rmem_max=8388608 sysctl -w net.ipv4.tcp_rmem='4096 87380 7388608'


2
วิธีการหลีกเลี่ยงการหยุดทำงานกับ linux?
การอัปเดตซอฟต์แวร์เป็นประจำของ Ubuntu ต้องเริ่มต้นใหม่ (ซึ่งอาจมีผลข้างเคียงเช่นการหยุดทำงาน) ฉันเห็น Ubuntu มีhttps://www.ubuntu.com/livepatchซึ่งอนุญาตให้อัปเดตเคอร์เนลโดยไม่ต้องบูตเครื่องใหม่นี่เป็นบริการชำระเงิน นอกจากนี้ยังมีksplice มีการแจกแจง / กระบวนการลีนุกซ์ที่การอัพเกรด / แพตช์ไม่ต้องรีบูตเครื่องหรือไม่? (ฉันรู้ว่าการตั้งค่าเซิร์ฟเวอร์ที่มีความพร้อมใช้งานสูง (HA) และการใช้เซิร์ฟเวอร์สำรองเป็นวิธีปฏิบัติที่ดีที่สุด - ดังนั้นฉันจึงไม่ถามเกี่ยวกับการให้บริการ แต่เป็นเซิร์ฟเวอร์จริง)

3
เหตุใด / proc / net / tcp6 แสดงถึง :: 1 เป็น :: 100: 0
ฉันเขียนยูทิลิตี้เพื่อตรวจสอบ / proc / net / tcp และ tcp6 สำหรับการเชื่อมต่อที่ใช้งานได้เร็วกว่าการแยกเอาต์พุต netstat เนื่องจากฉันไม่ได้เปิดใช้งาน ipv6 ฉันจึงใช้ localhost เป็นจุดอ้างอิงเป็นหลัก นี่คือสำเนาของ / proc / net / tcp6 ของฉัน sl local_address remote_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode 0: 00000000000000000000000000000000:006F 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 19587 1 ffff880262630000 100 0 …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.