首页 / LINUX / [转帖] 关于linux的内存
[转帖] 关于linux的内存
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了[转帖] 关于linux的内存,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2543字,纯文字阅读大概需要4分钟。
内容图文
![[转帖] 关于linux的内存](/upload/InfoBanner/zyjiaocheng/941/fdcdd1f9a23a41eaa89a9b77acdd665e.jpg)
linux内存计算
原创置顶 ctylihuai 最后发布于2019-06-23 11:30:16 阅读数 263 收藏
展开
详细内容请看,转载http://linuxperf.com/?p=142,本篇为阅读后的理解
linux内存分为三部分,内核,进程,cache
linux内核:
内核所用内存的静态部分,比如内核代码、页描述符等数据在引导阶段就分配掉了,并不计入MemTotal里,而是算作Reserved(在dmesg中能看到)
【Slab+ VmallocUsed + PageTables + KernelStack + HardwareCorrupted + Bounce + X】
Kernel的动态内存分配通过以下几种接口:
alloc_pages/__get_free_page: 以页为单位分配
vmalloc: 以字节为单位分配虚拟地址连续的内存块
slab :allocator,kmalloc: 以字节为单位分配物理地址连续的内存块,它是以slab为基础的,使用slab层的general caches — 大小为2^n,名称是kmalloc-32、kmalloc-64等(在老kernel上的名称是size-32、size-64等)。
Page Table:用于将内存的虚拟地址翻译成物理地址
KernelStack:每一个用户线程都会分配一个kernel stack(内核栈),内核栈虽然属于线程,但用户态的代码不能访问,只有通过系统调用(syscall)、自陷(trap)或异常(exception)进入内核态的时候才会用到
Bounce:有些老设备只能访问低端内存,比如16M以下的内存,当应用程序发出一个I/O 请求,DMA的目的地址却是高端内存时(比如在16M以上),内核将在低端内存中分配一个临时buffer作为跳转,把位于高端内存的缓存数据复制到此处。这种额外的数据拷贝被称为“bounce buffering”,会降低I/O 性能。大量分配的bounce buffers 也会占用额外的内存。
用户进程:
Hugepages在/proc/meminfo中是被独立统计的,与其它统计项不重叠,既不计入进程的RSS/PSS中,又不计入LRU Active/Inactive,也不会计入cache/buffer。如果进程使用了Hugepages,它的RSS/PSS不会增加。
使用Hugepages有三种方式:
(详见 https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt)
mount一个特殊的 hugetlbfs 文件系统,在上面创建文件,然后用mmap() 进行访问,如果要用 read() 访问也是可以的,但是 write() 不行。
通过shmget/shmat也可以使用Hugepages,调用shmget申请共享内存时要加上 SHM_HUGETLB 标志。
通过 mmap(),调用时指定MAP_HUGETLB 标志也可以使用Huagepages。
Rss,Pss,Uss
用户进程的内存有:进程的代码,进程malloc,进程shared,进程映射文件
进程独有内存Uss,进程的代码,堆栈,不共享的内存文件和shared
进程的分享内存Pss,进程独有内存加(分享的shared和映射文件/分享进程个数)
进程Rss,是进程所有相关的内存
cache
free总的cache是文件映射读写缓存,加快访问速度
buffer是磁盘io的读写队列缓存,可以加快io读写,调节速度不匹配
cache中有mapped映射文件,进程代码,文件系统,shared memory在内核中都是基于tmpfs实现的
drop cache可以回收内存,不能回收文件系统
————————————————
版权声明:本文为CSDN博主「ctylihuai」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ctylihuai/article/details/93379081
内容总结
以上是互联网集市为您收集整理的[转帖] 关于linux的内存全部内容,希望文章能够帮你解决[转帖] 关于linux的内存所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。