当前位置: 首页 > 科技观察

我什么时候应该关注Linux内存使用情况?

时间:2023-03-16 14:31:32 科技观察

Linux上的内存管理很复杂。虽然高使用率不一定是问题。你还应该关注其他事情。在Linux上内存不足通常并不表示有严重问题。为什么?因为健康的Linux系统会将磁盘活动缓存在内存中,基本上会吃掉未使用的内存,这显然是一件好事。换句话说,它不会浪费内存。使用空闲内存提高磁盘访问速度,不占用正在运行的应用程序的内存。您还可以想象,使用此内存缓存比直接访问硬盘驱动器(HDD)快数百倍,并且比直接访问固态驱动器快得多。内存已满或几乎已满通常意味着系统正在尽可能高效地运行——而不是它遇到了问题。缓存的工作原理磁盘缓存只是意味着系统充分利用未使用的资源(空闲内存)来加速磁盘读写。大多数情况下,应用程序不会丢失任何内容并且可以按需获取更多内存。此外,磁盘缓存不会导致应用程序改用交换分区。相反,用于磁盘缓存的内存空间会在需要时立即返回,并更新磁盘内容。主要和次要页面错误Linux系统通过将物理内存划分为称为“页面”的块并将这些页面映射到每个进程的虚拟内存来为进程分配空间。不再使用的页面可能会从内存中删除,尽管关联的进程仍在运行。当进程需要一个未映射或不在内存中的页面时,就会发生错误。因此,这个“fault”不是“error”而是“unavailables”的意思,faults在内存管理中起着重要的作用。轻微故障意味着内存中的页面未分配给请求进程,或者未标记为存在于内存管理单元中。重大错误意味着页面没有保存在内存中。如果您想了解次要页面错误和主要页面错误发生的频率,请像这样尝试ps命令。请注意,我们需要与页面错误和导致它的命令相关的条目。输出中省略了许多行。MINFL显示次要故障的数量,而MAJFL显示主要故障的数量。$ps-eomin_flt,maj_flt,cmdMINFLMAJFLCMD230760150/usr/lib/systemd/systemd--switched-root--system--deserialize1800[kthreadd]00[rcu_gp]00[rcu_par_gp]00[kworker/0:0H-kblockd]...16620gpg-agent--homedir/var/lib/fwupd/gnupg--use-standard-socket--daemon5251/usr/libexec/gvfsd-trash--生成器:1.16/org/gtk/gvfs/exec_spaw/049664/usr/libexec/gnome-terminal-server36170bash00[kworker/1:0H-kblockd]9270gdm-session-worker[pam/gdm-password]上报单个进程,可以试试这个命令(LCTT译注:参数中的1是要查看的进程的PID):$ps-omin_flt,maj_flt1MINFLMAJFL230064150也可以加上其他显示字段,示例包括进程所有者的UID和GID。$ps-omin_flt,maj_flt,cmd,args,uid,gid1MINFLMAJFLCMDCOMMANDUIDGID230064150/usr/lib/systemd/systemd--/usr/lib/systemd/systemd--00满多少?了解使用了多少内存的更好方法是使用free-m命令。-m选项指定数字的单位是MiBmebibytes而不是字节。$free-mtotalusedfreesharedbuff/cacheavailableMem:324430693549140667Swap:353503535注意free(未使用)内存可能不足,available(可用于启动新应用)会显示更大数量.两者的区别值得我们注意。可用意味着它可以在需要时重新使用,而免费意味着它现在可用。何时担心如果您的Linux系统性能良好——应用程序响应迅速,命令行显示没有问题——很可能是系统处于良好状态。请记住,某些应用程序可能由于某种原因运行缓慢,但这不会影响整个系统。过多的硬故障可能表明存在真正的问题,但将其与观察到的性能进行比较。一个好的方法是在可用内存接近0或“已使用的交换空间”增长或大幅波动时开始担心。如果“可用”项占总可用内存的合理百分比,那么您无需担心,如下例所示:$free-mtotalusedfreesharedbuff/cacheavailableMem:324430693549140667Swap:353503535Linux性能这很复杂。除此之外,Linux系统上的内存可能会变满,性能可能会下降。当您的系统出现问题时,不要仅仅依赖单个内存使用报告作为指标。Linux系统上的内存管理很复杂,因为它需要采取一些步骤来确保系统资源得到最大程度的利用。当您从全内存开始时,不要误以为您的系统存在问题,而实际上并非如此。