什么是Linux系统中的内核动态内存以及如何释放它

时间:2018-02-14 10:23:01

标签: memory-management memory-leaks linux-kernel shared-memory

这个问题与此有关 https://serverfault.com/questions/896282/cannot-explain-memory-occupancy-in-linux/896525#896525How to correctly identify and correct a memory leak on a server?

什么是内核动态内存?我现在几乎没有在我的工作站上运行进程

$ ps aux --sort -rss | head
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        987  0.0  0.0  54284 15932 ?        Ss   Feb09   0:03 /lib/systemd/systemd-journald
imoline+  49734  0.0  0.0  24640  8672 pts/0    Ss+  Feb13   0:05 /bin/bash
rstudio+   4803  0.0  0.0 128608  7400 ?        Ssl  Feb09   0:39 /usr/lib/rstudio-server/bin/rserver
imoline+  53699  0.0  0.0  23356  7224 pts/2    Ss   Feb13   0:04 /bin/bash
imoline+  68563  0.0  0.0  23200  6876 pts/1    Ss   10:37   0:00 -bash
root          1  0.0  0.0 204660  6804 ?        Ss   Feb09   0:05 /sbin/init
root      68556  0.0  0.0  99308  6800 ?        Ss   10:37   0:00 sshd: imolineris [priv]
root       4770  0.0  0.0  69944  6484 ?        Ss   Feb09   0:00 /usr/sbin/sshd -D

但仍然根据free

占用了内存
$ free -g
              total        used        free      shared  buff/cache   available
Mem:            125          67          56           0           1          57
Swap:           119           0         119

smem

$ sudo smem -t -w -p 
Area                           Used      Cache   Noncache 
firmware/hardware             0.00%      0.00%      0.00% 
kernel image                  0.00%      0.00%      0.00% 
kernel dynamic memory        54.68%      1.25%     53.43% 
userspace memory              0.06%      0.03%      0.03% 
free memory                  45.26%     45.26%      0.00% 
----------------------------------------------------------
                            100.00%     46.54%     53.46% 

我可以强制以某种方式释放它而不重新启动吗?

1 个答案:

答案 0 :(得分:0)

由于您没有回复,我将在不涉及Linux细节的情况下制作一般意义上的答案。

大多数操作系统需要为自己的目的分配动态内存。该存储器位于虚拟地址空间的系统空间区域。因此,当内核动态内存在内核模式下执行时,它们可以访问所有进程。在某些系统上,这个动态内存进一步细分为" paged"和"非分页"。

注意区别:

  

内核动态内存54.68%1.25%53.43%

     

用户空间内存0.06%0.03%0.03%

考虑操作系统必须维护的所有数据结构(例如,进程状态定义,页表)以及执行I / O的缓冲区。

是的,可能存在内核内存泄漏。您将内存分配给内核这一事实并不一定意味着存在泄漏。