簡體   English   中英

在Linux內核中修改Sysfs的/ sys / devices / system / memory /目錄

[英]Modifying the /sys/devices/system/memory/ directory of Sysfs in Linux Kernel

我正在完成我的課程作業,以修改Linux內核中Sysfs的內存目錄。 在獲得我教授的許可后,我正在這里尋求人們的幫助。 這正是我真正想做的。

背景:如果我有4 GB的RAM,則我的主板上可以有4 X 1 GB的DIMM或2X 2GB的DIMM。 通過將4GB的物理內存划分為許多塊,每個塊具有特定的開始和結束物理地址,在Linux中支持NUMA。 Sysfs中的“設備”目錄包含全局設備層次結構。 它包含已通過內核注冊的總線類型發現的每個物理設備。 因此,有關內存塊的詳細信息存儲在Linux內核的路徑“ / sys / devices / system / memory /”中。 在此目錄中,我們有一個名為“ block_size_bytes”的文件,該文件決定了我的RAM可以分成多少部分。 例如,在我的系統中它是8000000,因此RAM從memory0到memory43分為32個內存文件夾。 每個“ memoryX”目錄將有一個名為“ state”的文件,該文件代表內存塊的在線/離線狀態。 如果要“關閉”特定的內存塊,可以在在線/離線之間切換。

所以這就是我要做的事情:

我想將整個目錄結構修改為4個目錄。 為什么是4? 因為,我的主板上有4個1GB DIMM,所以我希望將這32個內存塊減少到4個大塊,這樣我就可以通過切換在線/離線狀態來控制我想要的任何DIMM。 因此,基本上我想在DIMM級別上更改內存的狀態。

那幾乎是我的問題描述。

我的方法:我通讀了sysfs文件系統,並試圖查找負責組織sysfs的“內存”目錄的內核模塊。 我想根據我的要求查找模塊並對其進行編輯,然后編譯該模塊。 越來越難以找到有關該主題的特定文檔,這使我提出了這個問題。 我所能找到的就是這個C編程文件'/lib/modules/3.8.0-19-generic/source/drivers/base/memory.c',其中包含用於設置內存塊“狀態”的方法,顯示每個內存部分的開始和結束物理地址以及許多其他方法。 但是我無法弄清楚到底在哪里調用這些方法,或者哪個模塊正在使用此C文件設置所有屬性。

您能否讓我知道我需要尋找哪個確切的模塊? 如果您發現我的方法有誤,請您指出正確的方向嗎?

提前致謝 :)

我只是回答問題的這一部分:

但是我無法弄清楚到底在哪里調用這些方法,或者哪個模塊正在使用此C文件設置所有屬性。

您可以使用lxr在內核樹中搜索。 這里是帶有show_mem_state函數的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM