Linux内核'保留'内存

时间:2015-02-25 23:48:22

标签: linux memory optimization kernel arm64

我正在尝试为低内存系统(16MB ram)编译内核(3.14,arm64 arch)。我已经设法关闭了我不需要的所有功能,基本上没有设备,没有fs,没有模块,没有ZONE_DMA,一个非常非常基本的内核。

然而,当我启动内核时,我看到了:

内存:860K / 16384K可用(789K内核代码,67K rwdata,56K rodata,64K init,38K bss,15524K保留)

  • 这个保留的记忆是什么?

  • 我该如何减少这个?预备队会占用我的大量内存,只留下860K

提前致谢!

2 个答案:

答案 0 :(得分:0)

内存:860K / 16384K可用(789K内核代码,67K rwdata,56K rodata,64K初始化,38K bss,保留15524K)

这是process in memory的结构:文本/代码段,数据段(bss,rodata等),堆和堆栈。内核始终驻留在RAM中,并为其使用保留一些内存空间。但是当RAM很小时,内核和用户空间进程会共享它。

了解有关嵌入式Linux read this post的更多信息。

答案 1 :(得分:0)

它是应该始终存在以满足关键内存分配的最小内存量。将其设置得太低可能会导致系统损坏,而设置为高可能会立即使您的系统 OOM。您可以通过写入 from tkinter import * from tkinter import ttk def newsave(): global saveamount #this is 0 by default saveamount = saveamount + 1 savecountdoc = open("saves/savecount.txt", "w+") savecountdoc.write(str(saveamount)) Button(scrollable_frame, text="Save " + str(saveamount), width="53", height="5").pack() def savespack(): savelabelcount = 0 savebuttontext = StringVar() for i in range(saveamount): savelabelcount = savelabelcount + 1 print(savelabelcount) #prints 1-9 savebuttontext.set("Save " + str(savelabelcount)) Button(scrollable_frame, textvariable=savebuttontext, width="53", height="5").pack() def savefiles(): global backbutton global scrollable_frame playbutton.place_forget() backbutton = Button(main, text="Back", width ="56", command=startscreenback) backbutton.grid(row="0", column="0") savesframe = ttk.Frame(main) savesframecanvas = Canvas(savesframe) scrollbar = ttk.Scrollbar(savesframe, orient="vertical", command=savesframecanvas.yview) scrollable_frame = ttk.Frame(savesframecanvas) scrollable_frame.bind( "<Configure>", lambda e: savesframecanvas.configure( scrollregion=savesframecanvas.bbox("all") ) ) savespack() newsavebutton = Button(scrollable_frame, text="New Save", width="53", height="5", command=newsave).pack() savesframecanvas.create_window((0, 0), window=scrollable_frame, anchor="nw") savesframecanvas.configure(yscrollcommand=scrollbar.set) savesframe.place(x="0", y="50") savesframecanvas.pack(side="left", fill="both", expand=True) scrollbar.pack(side="right", fill="y") main = Tk() main.title("Fruit Clicker") main.geometry("400x350+300+100") playbutton = Button(main, text="Play", width="40", height="3", command=savefiles) playbutton.place(x="60", y="100") main.mainloop() 来修改此值。

阅读:

/proc/sys/vm/min_free_kbytes

要将其设置为 1024KB (1MB):
$ cat /proc/sys/vm/min_free_kbytes 67584