Linux里面什么线性内存?

Linux里面什么线性内存?,第1张

Linux内存线性地址空间格局解析

实用平台:i386

Linux内存线性地址空间大小为4GB,分为2个局部:用户空间局部(等闲是3G)和内核空间局部(等闲是1G)。在此我们重要关怀内核地址空间局部。

内核穿越内核页大局目录来管教所有的物理内存,由于线形地址前3G空间为用户利用,内核页大局目录前768项(刚好3G)除0、1两项外全副为0,后256项(1G)用来管教所有的物理内存。内核页大局目录在编译时静态地定义为swapper_pg_dir数组,该数组从物理内存地址0x101000处开始储藏。

由图可见,内核线形地址空间局部从PAGE_OFFSET(等闲定义为3G)开始,为了将内核装入内存,从PAGE_OFFSET开始8M线形地址用来照射内核所在的物理内存地址;接下来是mem_map数组,mem_map的起始线形地址与系统构造相干,例如对于UMA构造,由于从PAGE_SIZE开始16M线形地址空间对应的16M物理地址空间是DMA区,mem_map数组等闲开始于PAGE_SIZE+16M的线形地址;从PAGE_SIZE开始到VMALLOC_START

VMALLOC_OFFSET的线形地址空间直接照射到物理内存空间(一一对应影射,物理地址=线形地址-PAGE_OFFSET),这段区域的大小和机器切实具有的物理内存大小有关,这儿VMALLOC_OFFSET在x86上为8M,重要用来遏止越界讹谬;在内存比拟小的系统上,余下的线形地址空间(还要再扣除空白区即VMALLOC_OFFSET)被vmalloc()函数用来把不继续的物理地址空间照射到继续的线形地址空间上,在内存比拟大的系统上,vmalloc()利用从VMALLOC_START到VMALLOC_END(也即PKMAP_BASE扣除2页的空白页大小PAGE_SIZE)的线形地址空间,此刻余下的线形地址空间(还要再扣除2页的空白区即VMALLOC_OFFSET)又能够分成2局部:第一局部从PKMAP_BASE到FIXADDR_START用来由kmap()函数照射高端内存;第二局部,从FIXADDR_START到FIXADDR_TOP,这是一个安宁大小的线形地址空间,(引用:Fixed

virtual addresses are needed for subsystems that need to know the

virtual address at compile time such as the

APIC),在x86系统构造上,FIXADDR_TOP被静态定义为0xFFFFE000,此刻这个安宁大小空间告终于全副线形地址空间最后4K前面,该安宁大小空间大小是在编译时计算出来并存储在__FIXADDR_SIZE变量中。真空断路器o:p>

正是由于vmalloc()利用区、kmap()利用区及安宁大小区的存在才使ZONE_NORMAL区大小受到局限,由于内核在运行时必需这些函数,因而在线形地址空间中起码要VMALLOC_RESERVE大小的空间。VMALLOC_RESERVE的大小与系统构造相干,在x86上,VMALLOC_RESERVE定义为128M,这即便为什么我们看到ZONE_NORMAL大小等闲是16M到896M的起因。

Linux系统基本的内存管理知识讲解

内存是Linux内核所管理的最重要的资源之一。内存管理系统是 *** 作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量。虚拟内存就是为了克服这个矛盾而采用的策略。系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量。Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大。核心把当前不用的内存块存到硬盘,腾出内存给其他目的。当原来的内容又要使用时,再读回内存。

一、内存使用情况监测

(1)实时监控内存使用情况

在命令行使用“Free”命令可以监控内存使用情况

代码如下:

#free

total used free shared buffers cached

Mem: 256024 192284 63740 0 10676 101004

-/+ buffers/cache: 80604 175420

Swap: 522072 0 522072

上面给出了一个256兆的RAM和512兆交换空间的'系统情况。第三行输出(Mem:)显示物理内存。total列不显示核心使用的物理内存(通常大约1MB)。used列显示被使用的内存总额(第二行不计缓冲)。 free列显示全部没使用的内存。Shared列显示多个进程共享的内存总额。Buffers列显示磁盘缓存的当前大小。第五行(Swap:)对对换空间,显示的信息类似上面。如果这行为全0,那么没使用对换空间。在缺省的状态下,free命令以千字节(也就是1024字节为单位)来显示内存使用情况。可以使用—h参数以字节为单位显示内存使用情况,或者可以使用—m参数以兆字节为单位显示内存使用情况。还可以通过—s参数使用命令来不间断地监视内存使用情况:

#free –b –s2

这个命令将会在终端窗口中连续不断地报告内存的使用情况,每2秒钟更新一次。

(2)组合watch与 free命令用来实时监控内存使用情况:

代码如下:

#watch -n 2 -d free

Every 2.0s: free Fri Jul 6 06:06:12 2007

total used free shared buffers cached

Mem: 233356 218616 14740 0 5560 64784

-/+ buffers/cache: 148272 85084

Swap: 622584 6656 615928

watch命令会每两秒执行 free一次,执行前会清除屏幕,在同样位置显示数据。因为 watch命令不会卷动屏幕,所以适合出长时间的监测内存使用率。可以使用 -n选项,控制执行的频率也可以利用 -d选项,让命令将每次不同的地方显示出来。Watch命令会一直执行,直到您按下 [Ctrl]-[C] 为止。

二、虚拟内存的概念

(1)Linux虚拟内存实现机制

Linux虚拟内存的实现需要六种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制、内存共享机制。

首先内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址,在用户程序运行时如果发现程序中要用的虚地址没有对应的物理内存时,就发出了请求页要求如果有空闲的内存可供分配,就请求分配内存(于是用到了内存的分配和回收),并把正在使用的物理页记录在缓存中(使用了缓存机制)。 如果没有足够的内存可供分配,那么就调用交换机制,腾出一部分内存。另外在地址映射中要通过TLB(翻译后援存储器)来寻找物理页交换机制中也要用到交换缓存,并且把物理页内容交换到交换文件中后也要修改页表来映射文件地址。

(2)虚拟内存容量设定

也许有人告诉你,应该分配2倍于物理内存的虚拟内存,但这是个不固定的规律。如果你的物理保存比较小,可以这样设定。如果你有1G物理内存或更多的话,可以缩小一下虚拟内存。Linux会把大量的内存用做Cache的,但在资源紧张时回收回.。你只要看到swap为0或者很小就可以放心了,因为内存放着不用才是最大的浪费。

三、使甩vmstat命令监视虚拟内存使用情况

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对 *** 作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。通常使用vmstat 5 5(表示在5秒时间内进行5次采样)命令测试。将得到一个数据汇总它可以反映真正的系统情况。

代码如下:

#vmstat 5 5

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

r b swpd free buff cache si so bi bo in cs us sy id wa

1 0 62792 3460 9116 88092 6 30 189 89 1061 569 17 28 54 2

0 0 62792 3400 9124 88092 0 0 0 14 884 434 4 14 81 0

0 0 62792 3400 9132 88092 0 0 0 14 877 424 4 15 81 0

1 0 62792 3400 9140 88092 0 0 0 14 868 418 6 20 74 0

1 0 62792 3400 9148 88092 0 0 0 15 847 400 9 25 67 0

vmstat命令输出分成六个部分:

因为网站开发的需求,需要对单位的服务器内存进行升级。那么在linux中怎么查看内存型号呢?下面跟着我一起来了解一下吧。

linux怎么查看内存型号

机器主板是nVidia Corporation MCP61,系统内存支持双通道内存技术。

配置了4个DDRII DIMM插槽,支持DDRII 800/667/533内存,最大支持8G容量。

为了尝试下双通道内存技术,准备加一条与原来完全一样的内存条。

电脑配置上只写了kingston DDRII512M。

接下来就要用工具dmidecode(DMI table decoder)确定下内存频率了。

dmidecode命令可以全面的显示你系统的信息,包括bios、 cpu 、内存等信息。

例如:

[root@localhost testcase]$ sudo dmidecode --help

Usage: dmidecode [OPTIONS]

Options are:

-d, --dev-mem FILE Read memory from device FILE (default: /dev/mem)

-h, --help Display this help text and exit

-q, --quiet Less verbose output

-s, --string KEYWORD Only display the value of the given DMI string

-t, --type TYPE Only display the entries of given type

-u, --dump Do not decode the entries

-V, --version Display the version and exit

[root@localhost testcase]$ sudo dmidecode -t memory

# dmidecode 2.7

SM BIOS 2.4 present.

Handle 0x0007, DMI type 5, 24 bytes.

Memory Controller Information

Error Detecting Method: 64-bit ECC

Error Correcting Capabilities:

None

Supported Interleave: One-way Interleave

Current Interleave: One-way Interleave

Maximum Memory Module Size: 2048 MB

Maximum Total Memory Size: 8192 MB

Supported Speeds:

70 ns

60 ns

Supported Memory Types:

DIMM

SDRAM

Memory Module Voltage: 3.3 V

Associated Memory Slots: 4

0x0008

0x0009

0x000A

0x000B

Enabled Error Correcting Capabilities:

None

Handle 0x0008, DMI type 6, 12 bytes.

Memory Module Information

Socket Designation: DIMM0

Bank Connections: 0 1

Current Speed: Unknown

Type: ECC DIMM

Installed Size: 512 MB (Single-bank Connection)

Enabled Size: 512 MB (Single-bank Connection)

Error Status: OK

Handle 0x0009, DMI type 6, 12 bytes.

Memory Module Information

Socket Designation: DIMM1

Bank Connections: None

Current Speed: Unknown

Type: Unknown

Installed Size: Not Installed

Enabled Size: Not Installed

Error Status: OK

Handle 0x000A, DMI type 6, 12 bytes.

Memory Module Information

Socket Designation: DIMM2

Bank Connections: None

Current Speed: Unknown

Type: Unknown

Installed Size: Not Installed

Enabled Size: Not Installed

Error Status: OK

Handle 0x000B, DMI type 6, 12 bytes.

Memory Module Information

Socket Designation: DIMM3

Bank Connections: None

Current Speed: Unknown

Type: Unknown

Installed Size: Not Installed

Enabled Size: Not Installed

Error Status: OK

Handle 0x0010, DMI type 16, 15 bytes.

Physical Memory Arroot

Location: System Board Or Motherboard

Use: System Memory

Error Correction Type: None

Maximum Capacity: 8 GB

Error Information Handle: Not Provided

Number Of Devices: 4

Handle 0x0012, DMI type 17, 27 bytes.

Memory Device

Arroot Handle: 0x0010

Error Information Handle: Not Provided

Total Width: 64 bits

Data Width: 72 bits

Size: 512 MB

Form Factor: DIMM

Set: None

Locator: DIMM0

Bank Locator: BANK0

Type: DDR2

Type Detail: Synchronous

Speed: 533 MHz (1.9 ns)

Manufacturer: Manufacturer0

Serial Number: SerNum0

Asset Tag: AssetTagNum0

Part Number: PartNum0

Handle 0x0014, DMI type 17, 27 bytes.

Memory Device

Arroot Handle: 0x0010

Error Information Handle: Not Provided

Total Width: Unknown

Data Width: 64 bits

Size: No Module Installed

Form Factor: DIMM

Set: None

Locator: DIMM1

Bank Locator: BANK1

Type: Unknown

Type Detail: Unknown

Speed: Unknown

Manufacturer: Manufacturer1

Serial Number: SerNum1

Asset Tag: AssetTagNum1

Part Number: PartNum1

Handle 0x0016, DMI type 17, 27 bytes.

Memory Device

Arroot Handle: 0x0010

Error Information Handle: Not Provided

Total Width: Unknown

Data Width: 64 bits

Size: No Module Installed

Form Factor: DIMM

Set: None

Locator: DIMM2

Bank Locator: BANK2

Type: Unknown

Type Detail: Unknown

Speed: Unknown

Manufacturer: Manufacturer2

Serial Number: SerNum2

Asset Tag: AssetTagNum2

Part Number: PartNum2

Handle 0x0018, DMI type 17, 27 bytes.

Memory Device

Arroot Handle: 0x0010

Error Information Handle: Not Provided

Total Width: Unknown

Data Width: 64 bits

Size: No Module Installed

Form Factor: DIMM

Set: None

Locator: DIMM3

Bank Locator: BANK3

Type: Unknown

Type Detail: Unknown

Speed: Unknown

Manufacturer: Manufacturer3

Serial Number: SerNum3

Asset Tag: AssetTagNum3

Part Number: PartNum3

总结 :

在Memory Controller Information中,可以看到最大的内存大小是8G,支持内存种类为DIMM和SDRAM。有四个Memory Slots。对应接下来的4个Memory Module Information。

DMI type 16 (man dmidecode里面有DMI TYPES specification)的意思是 Physical Memory Arroot。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7412541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存