Linux
linux上程序調度數據
我正在做一個作業系統項目,需要作業系統的程序調度數據。數據必須包括短期調度程序和長期調度程序中所有程序的列表,以及每個程序的 CPU 時間片和記憶體需求。此外,我還需要有關其他所有程序被搶占的時間和程序的數據。有沒有辦法在 linux 中收集所有這些數據?我怎樣才能做到這一點?
在 linux 原始碼中,有一個結構
task_struct
在include/linux/sched.h
. 有沒有辦法獲得該結構的每個對象的狀態?
您可以通過使用獲取大量有關程序、調度程序以及作業系統和硬體的其他組件的內部資訊
cat /proc/...
哪裡…可以是很多東西。比如它可以是一個程序ID,後面跟著很多具體的資訊請求,或者調度器調試資訊請求,例如:
cat /proc/sched_debug
要查看完整的選項列表,請鍵入
ls /proc
。您將看到一長串程序 ID 編號,以及一些有趣的名稱,例如 sched_debug、cpuinfo、meminfo、uptime 等。這一切都歸功於虛擬文件系統procfs您可以在此處 閱讀有關它的更多資訊。
另一個有用的命令是:
top
這將顯示有關程序如何調度、記憶體使用情況等的實時資訊。
如果您需要深入的日程安排資訊,您可以使用以下工具之一 -
- 性能
- SystemTap
- dtrace(我不知道linux埠的狀態是什麼)
- 那是
所有這些都可以利用核心掛鉤來顯示諸如上下文切換、中斷、I/O、系統呼叫等事件。