เรากำลังเรียกใช้กระบวนการแบบเรียลไทม์บนเคอร์เนลที่ไม่ใช่แบบเรียลไทม์ (CentOS 6) และนี่อาจจะไม่เปลี่ยนแปลง
เรามีแอพพลิเคชั่นวิดีโอสตรีมมิ่งที่ต้องการปริมาณการรับส่งข้อมูล PCIe ประมาณ 500 MB / s จาก FPGA ที่กำหนดเองอย่างต่อเนื่องเป็นเวลา 1.5 ชั่วโมงต่อครั้ง แอปพลิเคชั่นทำงานได้ดี - ส่วนใหญ่ อย่างไรก็ตามเรามีสถานการณ์ที่ดูเหมือนว่าเคอร์เนลจะหยุดตอบสนองต่อการให้บริการ PCIe หรือหน่วยความจำร้องขอสูงสุด 500 มิลลิวินาทีในแต่ละครั้ง สิ่งนี้ดูเหมือนว่าจะเกิดขึ้นในระหว่างการระเบิดไฟล์ IO จากเธรดอื่น ฉันพบว่ามันเป็นไปไม่ได้ที่จะพยายามทำซ้ำปัญหานี้โดยการทำไฟล์ดัมมี่จำนวนมาก IO จากพื้นที่ผู้ใช้ขณะที่แอปพลิเคชันหลักทำงานอยู่
มีวิธีบังคับ (จำลอง) "หยุด" ทั่วโลกของ Linux kernel (โดยเฉพาะการหยุด PCIe หรือการเข้าถึงหน่วยความจำ DDR3 ทั้งหมดหรืออะไรทำนองนั้น) เพื่อให้เราสามารถสร้างปัญหานี้ได้หรือไม่
ขณะนี้เรามีบัฟเฟอร์มากถึง 10 มิลลิวินาทีในหน่วยความจำ FPGA ภายใน แต่ก็ยังไม่เพียงพอ เราสามารถบัฟเฟอร์ไปยัง FPGA DDR3 แล้วถ่ายโอนไปยังโฮสต์ แต่เราต้องการวิธีการทดสอบคุณสมบัติใหม่นี้ภายใต้การข่มขู่
เราไม่ต้องการให้เคอร์เนลหยุดหรือล็อคอย่างถาวร เราต้องการความสามารถในการกำหนดช่วงเวลา
ฉันกำลังมองหาบางสิ่งบางอย่างตามแนวการเขียนค่าเวทย์มนตร์/proc/sys/vm
เป็นการชั่วคราวที่ทำให้ระบบแทบจะคลานแล้วคืนกลับหลังจากไม่กี่ร้อยมิลลิวินาที แต่มองหาวิธีที่เป็นไปได้ที่จะทำลายมันไม่ใช่สำหรับมือใหม่อย่างฉัน ( https://www.kernel.org/doc/Documentation/sysctl/vm.txt ) อาจจะมีnumactl
เวทมนตร์บ้างไหม?