ขึ้นอยู่กับประเภทของแอปพลิเคชันที่คุณใช้เป็นอย่างมาก หากคุณมีแอปพลิเคชั่นซึ่งเป็นตึกระฟ้า WRT ที่มีความสุขมากคุณสามารถคาดหวังว่าจะเห็นการสลับบริบทจำนวนมาก หากแอปพลิเคชั่นส่วนใหญ่ของคุณไม่มีการใช้งานและตื่นขึ้นมาเมื่อมีสิ่งใดเกิดขึ้นบนซ็อกเก็ตเท่านั้นคุณสามารถคาดหวังได้ว่าอัตราการสลับบริบทต่ำ
การเรียกระบบ
การเรียกระบบทำให้เกิดการสลับบริบทตามธรรมชาติของตัวเอง เมื่อกระบวนการเรียกใช้ระบบโดยทั่วไปแล้วจะบอกให้เคอร์เนลรับช่วงเวลาปัจจุบันและหน่วยความจำทำสิ่งต่าง ๆ ที่กระบวนการไม่ได้รับการยกเว้นและกลับไปที่จุดเดิมเมื่อเสร็จสิ้น
เมื่อเราดูคำจำกัดความของการเขียน (2) syscall จาก Linux สิ่งนี้จะชัดเจนมาก:
ชื่อ
เขียน - เขียนไปยังไฟล์อธิบาย
สรุป
#include
ssize_t write (int fd, void const * buf, นับ size_t);
รายละเอียด
write () เขียนจนถึงจำนวนไบต์จากบัฟเฟอร์ที่ชี้ buf ไปยังไฟล์
อ้างอิงโดยไฟล์ descriptor fd [ .. ]
คืนค่า
ในความสำเร็จจำนวนของไบต์ที่ถูกเขียนจะถูกส่งกลับ (ศูนย์หมายถึง
ไม่มีอะไรเขียน) ข้อผิดพลาดจะถูกส่งกลับ -1 และตั้ง errno
อย่างเหมาะสม.
[ .. ]
นี่เป็นการบอกให้เคอร์เนลรับช่วงการทำงานจากโปรเซสเลื่อนขึ้นเป็นcount
ไบต์เริ่มจากที่อยู่หน่วยความจำที่ชี้*buf
ไปยังไฟล์ descriptor fd
ของโปรเซสปัจจุบันแล้วกลับไปที่โพรเซสและบอกเขาว่ามันไปอย่างไร
เป็นตัวอย่างที่ดีในการแสดงนี้เป็นเกมเซิร์ฟเวอร์ทุ่มเทสำหรับการเล่นเกมตามวาล์วมาHLDS http://nopaste.narf.at/f1b22dbc9แสดง syscalls มูลค่าหนึ่งวินาทีที่ทำโดยอินสแตนซ์เดียวของเซิร์ฟเวอร์เกมที่ไม่มีผู้เล่นอยู่ กระบวนการนี้ใช้เวลา CPU ประมาณ 3% ใน Xeon X3220 (2.4Ghz) เพียงเพื่อให้คุณรู้สึกว่าราคาแพงแค่ไหน
multi-tasking
แหล่งที่มาของการสลับบริบทอาจเป็นกระบวนการที่ไม่ได้ทำ syscalls แต่ต้องย้ายออกจาก CPU ที่กำหนดเพื่อให้มีที่ว่างสำหรับกระบวนการอื่น
เป็นวิธีที่ดีที่จะเห็นภาพนี้เป็นcpuburn cpuburn ไม่ได้ทำ syscalls ใด ๆ มันทำซ้ำมากกว่าหน่วยความจำของตัวเองดังนั้นจึงไม่ควรทำให้เกิดการสลับบริบท
ใช้เครื่องที่ไม่ได้ใช้งานเริ่ม vmstat จากนั้นเรียกใช้ burnMMX (หรือการทดสอบอื่น ๆ จากแพ็คเกจ cpuburn) สำหรับซีพียูคอร์ทุกเครื่องที่มี คุณควรจะมีการใช้ประโยชน์จากระบบอย่างเต็มที่ แต่ก็ไม่ได้มีการสลับบริบทเพิ่ม จากนั้นลองเริ่มกระบวนการเพิ่มเติมอีกสองสามครั้ง คุณจะเห็นว่าอัตราการสลับบริบทเพิ่มขึ้นเมื่อกระบวนการเริ่มแข่งขันกับแกนประมวลผลของ CPU จำนวนของการสลับขึ้นอยู่กับอัตราส่วนของกระบวนการ / คอร์และความละเอียดมัลติทาสกิ้งของเคอร์เนลของคุณ
อ่านเพิ่มเติม
linfo.org มีเขียนขึ้นมีความสุขกับสิ่งที่สวิทช์บริบทและสายระบบมี Wikipediaมีข้อมูลทั่วไปและคอลเลกชันลิงค์ที่ดีในการโทรของระบบ