>  기사  >  운영 및 유지보수  >  리눅스 물리적 메모리는 무엇을 의미합니까?

리눅스 물리적 메모리는 무엇을 의미합니까?

青灯夜游
青灯夜游원래의
2023-03-02 10:30:072521검색

Linux에서 물리적 메모리는 시스템 하드웨어가 제공하는 메모리 크기, 즉 실제 메모리를 의미합니다. Linux의 메모리 관리는 물리적 메모리를 완전히 활용할 수 있도록 페이징 액세스 메커니즘을 채택합니다. 커널은 적절한 시간에 물리적 메모리에서 자주 사용되지 않는 데이터 블록을 가상 메모리로 자동 교체하고 자주 사용되는 데이터 블록은 자동으로 교체됩니다. 적절한 시간에 가상 메모리에 정보가 물리적 메모리에 유지됩니다.

리눅스 물리적 메모리는 무엇을 의미합니까?

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

Virtual Memory and Physical Memory in Linux


우리 모두는 메모리에서 직접 데이터를 읽고 쓰는 것이 하드 디스크에서 데이터를 읽고 쓰는 것보다 훨씬 빠르다는 것을 알고 있으므로 모든 데이터를 메모리에서 읽고 쓰는 것이 바람직합니다. 그러나 메모리는 제한되어 있으므로 물리적 메모리와 가상 메모리의 개념이 발생합니다.

물리적 메모리는 시스템 하드웨어에서 제공하는 메모리 크기, 즉 실제 메모리입니다. Linux에는 물리적 메모리와 비교하여 가상 메모리라는 개념도 있습니다. 가상 메모리는 물리적 메모리 부족을 해결하기 위해 제안된 전략입니다. 디스크 공간을 사용하여 가상화된 논리적 메모리입니다. 가상 메모리로 사용되는 디스크 공간을 스왑 공간(스왑 공간이라고도 함)이라고 합니다.

물리적 메모리의 확장으로, Linux는 물리적 메모리가 부족할 때 스왑 파티션의 가상 메모리를 사용합니다. 보다 구체적으로 커널은 임시로 사용되지 않은 메모리 블록 정보를 스왑 공간에 기록합니다. 일단 해제되면 이 메모리는 다른 목적으로 사용될 수 있습니다. 원본 콘텐츠가 필요할 때 정보는 스왑 공간에서 물리적 메모리로 다시 읽혀집니다.

Linux의 메모리 관리는 물리적 메모리를 완전히 활용할 수 있도록 페이징 액세스 메커니즘을 채택합니다. 커널은 물리적 메모리에서 자주 사용되지 않는 데이터 블록을 적절한 시간에 자동으로 가상 메모리로 교체합니다. 적절한 시점에 자동으로 가상 메모리로 스왑되어 사용된 정보는 물리적 메모리에 유지됩니다.

Linux 메모리 작동 메커니즘을 깊이 이해하려면 다음 측면을 알아야 합니다.

  • 우선, Linux 시스템은 여유 물리적 메모리를 최대한 유지하기 위해 수시로 페이지 스왑 작업을 수행합니다. 아무것도 없더라도 가능합니다. 메모리가 필요한 것에는 Linux도 일시적으로 사용하지 않는 메모리 페이지를 교체합니다. 이렇게 하면 교체를 기다리는 데 필요한 시간을 크게 절약할 수 있기 때문입니다.

  • 두 번째로, Linux의 페이지 스와핑은 조건부입니다. 사용하지 않을 때 모든 페이지가 가상 메모리로 스와핑되는 것은 아닙니다. Linux 커널은 "가장 최근에 사용한" 메모리에 따라 자주 사용되지 않는 일부 페이지 파일만 가상 메모리로 스와핑합니다.

때때로 이러한 현상을 볼 수 있습니다. Linux에는 여전히 물리적 메모리가 많지만 스왑 공간도 많이 사용됩니다. 사실 이는 놀라운 일이 아닙니다. 예를 들어, 메모리 자원을 많이 차지하는 프로세스가 실행 중에 메모리 자원을 많이 소모하는 경우, 자주 사용되지 않는 일부 페이지 파일은 가상 메모리로 스왑되지만 나중에 메모리 자원을 많이 차지하는 프로세스는 종료되고 이때 방금 스왑 아웃된 페이지 파일은 (필요한 경우를 제외하고) 자동으로 물리 메모리로 스왑되지 않으며, 이때 시스템 물리 메모리는 많이 여유로워지며 스왑은 공간도 사용하고 있는데 방금 언급한 문제 현상이 나타납니다.

마지막으로, 사용 시 스왑 공간의 페이지가 먼저 물리적 메모리로 스왑됩니다. 이때 이러한 페이지를 수용할 수 있는 물리적 메모리가 충분하지 않으면 결과적으로 즉시 스왑 아웃되지 않을 수 있습니다. 이러한 스왑 페이지를 저장하는 데 필요한 공간은 결국 Linux에서 잘못된 충돌 및 서비스 이상과 같은 문제로 이어질 것입니다. Linux는 일정 시간 내에 스스로 복원할 수 있지만 복원된 시스템은 기본적으로 사용할 수 없습니다.

따라서 Linux 메모리 사용을 올바르게 계획하고 설계하는 것이 매우 중요합니다. 물리적 메모리 및 스왑 공간의 크기 설정은 실제 사용되는 하드 디스크 크기에 따라 다르지만 일반적으로 다음 기본 원칙을 따릅니다.

  • 메모리가 더 작은 경우(경험에 따르면 물리적 메모리는 4GB 미만) 일반적으로 스왑 파티션 크기를 메모리의 2배로 설정합니다.

  • 물리적 메모리가 4GB보다 크고 16GB 미만인 경우 다음을 수행할 수 있습니다. 스왑 파티션 크기를 실제 메모리와 동일하게 설정합니다.

  • 메모리 크기가 16GB를 초과하는 경우 스왑을 0으로 설정할 수 있지만 특정 크기의 스왑 파티션을 설정하면 특정 효과가 있으므로 권장되지 않습니다.

메모리 사용량을 확인하는 Linux 시스템


GUI를 사용하는 Windows 및 Linux 운영 체제에서는 일반적으로 UI를 사용하여 시스템 메모리 및 공간 사용량을 확인할 수 있지만 개발이나 운영 및 유지 관리 담당자에게는 종종 GUI 없이 Linux 서버에서 작업하려면 명령줄이 GUI보다 더 많은 기능과 유연성을 제공할 수 있습니다.

특히 시스템의 응용 프로그램이 비정상적이거나 시스템 사용량이 비정상적이거나 Linux 개발에 메모리 트리밍이 필요한 경우 시스템 메모리 및 공간 사용량을 이해하고 일반적으로 사용되는 몇 가지 보기 도구를 마스터해야 합니다.

일반적인 명령

  • 메모리 사용량 보기: free
  • 프로세스 정보 표시(CPU, 메모리 사용량 및 기타 정보 포함): top, ps
  • 드라이버 점유 메모리 보기: lsmod

1 시스템 보기 memory free

free 명령은 현재 시스템의 사용되지 않은 메모리 크기를 표시할 수 있으며, 커널에서 사용하는 메모리 버퍼도 표시할 수 있습니다. 터미널에 free를 입력하면(매개변수는 나중에 설명됩니다) 다음과 같이 서버의 메모리 상태를 확인할 수 있습니다.
여기에 이미지 설명 삽입free命令可以显示当前系统未使用的和已使用的内存大小,还可以显示被内核使用的内存缓冲区。在终端中输入free(参数稍后说明)可以看到我们服务器内存情况,如下:
리눅스 물리적 메모리는 무엇을 의미합니까?

1.1详细说明如下:

Mem: 内存的使用信息
Swap: 交换空间的使用信息

total:总计物理内存的大小。
used:已使用物理内存。
free:可用物理内存。
shared:多个进程共享的内存总额。
buffers/cached:缓存缓冲使用物理内存大小。
available:还可以被应用程序使用的物理内存大小。

1.2 各物理内存之间的关系

total = used + free + buffer/cache
avaiable = free + buffer/cache(一般来说是这样,个人电脑是这样,但服务器或者公共云普通用户有部分buffer/cache是用不了的就会有avaiable

1.3 free与available的区别

free是正在未被使用的内存
available是应用程序认为可用的内存
Linux为了提升读写性能,消耗一部分内存资源作为缓存或者缓冲内存,在内核看来这部分buffer/cache属于已被使用的内存;在应用程序申请内存,而free内存不够时,就会让内核回收buffer和cache来满足应用程序的内存需求。

1.4buff和cache的区别

buffers和cache是有一定区别的:

  • A buffer is something that has yet to be “written” to disk.  —buffer 写缓存,数据存储时,先保存到磁盘缓冲区,然后再写入到永久空间
  • A cache is something that has been “reed” from the disk adn stored for later use. --cache 读缓存,数据从磁盘读出后,暂留在缓冲区,预备程序接下来的使用。

1.5 free参数说明

free命令下显示的单位是k,可以在free后面加上-m(即free -m)显示单位为Mb,如下图:
리눅스 물리적 메모리는 무엇을 의미합니까?
可以通过free --help查看free的详细命令:
리눅스 물리적 메모리는 무엇을 의미합니까?

通过free -h可以自动匹配适合人阅读习惯的单位,其中h是humanity之意。

ps:
第3行swap为交换分区,类似windows系统中的虚拟内存,当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。

2 查看进程占用内存

  • top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令可以有效的发现系统的缺陷出在哪里,如内存不够、CPU处理能力不够、IO读写过高等。通过top命令所提供的互动式界面,用热键可以管理。
    相关语法:top -X

1.1 자세한 설명은 다음과 같습니다.
  • Mem
: 메모리 사용량 정보
    Swap
  • : 스왑 공간 사용량 정보

  • total
: 총 실제 메모리 크기입니다.

used리눅스 물리적 메모리는 무엇을 의미합니까?: 물리적 메모리가 사용되었습니다.

무료🎜: 사용 가능한 물리적 메모리.
🎜shared🎜: 여러 프로세스가 공유하는 총 메모리 양입니다.
🎜buffers/cached🎜: 캐시 버퍼는 물리적 메모리 크기를 사용합니다.
🎜available🎜: 애플리케이션에서도 사용할 수 있는 물리적 메모리의 크기입니다. 🎜

🎜🎜1.2 물리적 메모리의 관계🎜

🎜🎜전체 = 사용 + 여유 + 버퍼/캐시🎜
🎜사용 가능 = 여유 + 버퍼/캐시🎜 (일반적으로 개인용 컴퓨터의 경우이지만, 일반 서버나 퍼블릭 클라우드의 사용자가 사용할 수 없는 버퍼/캐시가 있는 경우에는 available 🎜🎜1.3 free와 available의 차이🎜🎜🎜free🎜는 사용되지 않는 메모리입니다.
🎜available🎜은 애플리케이션에서 사용 가능한 것으로 간주하는 메모리입니다.
Linux는 읽기 쓰기 성능을 향상시키기 위해 메모리 자원의 일부를 캐시 또는 버퍼 메모리로 소비합니다. 커널의 관점에서 이 부분(버퍼/캐시🎜)은 애플리케이션이 메모리를 적용할 때 사용되는 메모리에 속합니다. 메모리가 충분하지 않으면 커널은 애플리케이션의 메모리 요구 사항을 충족하기 위해 버퍼와 캐시를 재활용합니다. 🎜

🎜🎜1.4버프와 캐시의 차이점🎜

🎜버퍼와 캐시에는 일정한 차이점이 있습니다. 🎜🎜🎜버퍼는 아직 “ 🎜🎜캐시는 나중에 사용하기 위해 디스크에서 "리드"된 것입니다. --cache 읽기 캐시는 디스크에서 데이터를 읽은 후 프로그램의 후속 사용을 준비하기 위해 임시로 버퍼에 저장됩니다. 🎜🎜

🎜🎜1.5 자유 매개변수 설명🎜

🎜free 명령에 표시되는 단위는 k입니다. free 뒤에 -m을 추가할 수 있습니다(예: free -m ) 표시 단위는 아래와 같이 Mb입니다.

free --help를 통해 free의 자세한 명령을 볼 수 있습니다:
리눅스 물리적 메모리는 무엇을 의미합니까?🎜🎜free -h를 통해 사람들의 독서 습관에 적합한 단위를 자동으로 매칭할 수 있습니다. , 여기서 h는 인류의 의미입니다. 🎜🎜🎜ps:🎜
3행 🎜swap🎜은 Windows 시스템의 가상 메모리와 유사한 스왑 파티션으로, 메모리가 부족할 때 하드 디스크 공간의 일부를 메모리로 가상화하여 문제를 해결합니다. 메모리 용량 부족 문제. 🎜🎜🎜🎜🎜2 프로세스가 차지하는 메모리 확인🎜🎜🎜🎜🎜top 명령은 시스템의 전반적인 동작을 실시간으로 동적으로 볼 수 있는 다중 기능을 통합하는 실용적인 도구입니다. 파티 정보 모니터링 시스템 성능 및 운영 정보 도구입니다. top 명령은 메모리 부족, CPU 처리 능력 부족, 과도한 IO 읽기 및 쓰기와 같은 시스템 결함을 효과적으로 검색할 수 있습니다. top 명령이 제공하는 대화형 인터페이스는 단축키를 사용하여 관리할 수 있습니다.
관련 구문: top -X🎜🎜
-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。
🎜🎜 top 명령 실행 중에 사용할 수 있는 일부 대화형 명령입니다. 이러한 명령은 단일 문자이며 명령줄에서 -s 옵션을 사용하는 경우 일부가 차단될 수 있습니다. 대화형 명령은 다음과 같습니다. 🎜🎜
h:显示帮助画面,给出一些简短的命令总结说明;
k:终止一个进程;
i:忽略闲置和僵死进程,这是一个开关式命令;
q:退出程序;
r:重新安排一个进程的优先级别;
S:切换到累计模式;
s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;
f或者F:从当前显示中添加或者删除项目;
o或者O:改变显示项目的顺序;
l:切换显示平均负载和启动时间信息;
m:切换显示内存信息;
t:切换显示进程和CPU状态信息;
c:切换显示命令名称和完整命令行;
M:根据驻留内存大小进行排序;
P:根据CPU使用百分比大小进行排序;
T:根据时间/累计时间进行排序;
w:将当前设置写入~/.toprc文件中。
🎜🎜🎜 top 명령을 터미널에 직접 입력하면 다음 인터페이스를 볼 수 있습니다. 🎜🎜🎜🎜🎜🎜

2.1 top命令的第一到第五行的详细说明如下:

top - 10:14:31 当前系统时间
up 3 days, 22:36 系统已经运行了3天22h36min
1 users 共有1个用户为登录状态
load average: 0.57, 0.74, 0.65 系统负载,即任务队列的平均长度,load average后面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况。
注意:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

Tasks: 322 total 总进程数
2 running 正在运行的进程数
320 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 冻结进程数
%Cpu(s): 2.7 us, 用户空间占用CPU百分比(用户态使用CPU占比)
2.7 sy 内核空间占用CPU百分比 (系统态使用CPU占比)
0.0 ni 用做nice加权的进程分配的用户态cpu时间比
94.0 id 空闲的cpu时间比
0.0 wa IO wait ,cpu等待磁盘写入完成时间
0.0 hi Hardware IRQ,硬中断消耗时间
0.0 si Software IRQ,软中断消耗时间
0.7 st 被hypervisor(管理程序,一般为服务器或者虚拟机)偷取时间
MiB Mem : 11995.2 total 物理内存总量,单位:Mb
360.9 free 空闲内存总量
6766.0 used 使用的物理内存总量,此处需要注意的是:used实际指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
4868.3+buff/cache 用作内核缓存的内存量
MiB Swap: 7680.0 total 交换区总量
7433.1 free 空闲交换区总量
246.9 used 使用的交换区总量
3665.4 avail Mem 在不交换的情况下,对启动新应用程序可用内存的估计
(网上也有说法是交换区的可用容量)
top命令第六行为空。
top命令第七行是各个进程的监控:

从左到右依次为:

PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

需要注意的是,此界面显示的并不是所有进程,由于页面显示限制仅仅显示了这几行,我们可以通过top -b -n 1查看系统的所有进程的快照。

3查看内核占用内存

命令:cat /proc/meminfo
리눅스 물리적 메모리는 무엇을 의미합니까?

注:initrd和初始化代码init在引导完成之后会被释放掉,所以最终的内核可管理内存(total)会比dmesg显示的available更多一点,相应的源代码可参见: free_initrd_mem() 和 free_initmem()。
优化可以主要从优化保留内存和优化used内存两个方面进行,具体的需要结合代码。
查看磁盘命令比较多,最常用的为: df -lh 命令

4 lsmod查看驱动占用内存

命令:lsmod
리눅스 물리적 메모리는 무엇을 의미합니까?

  • 功能:
    列出已加载的模块,以友好的方式显示/proc/modules的内容
  • 格式:
    第一列:Module表示模块的名称,如sysDebug
    第二列:Size表示模块大小,单位:byte
    第三列:Used 表示依赖的模块个数
    第四列:by表示依赖的模块内容
  • 示例:
    lsmod|grep -i ext3 //查看当前系统是否加载ext3驱动模块

相关推荐:《Linux视频教程

위 내용은 리눅스 물리적 메모리는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.