美文网首页python入门基础学习
从门外到门内:Linux基础知识,干货十足,打包带走!

从门外到门内:Linux基础知识,干货十足,打包带走!

作者: 编程新视野 | 来源:发表于2018-11-12 15:47 被阅读3次

最近在兼职部分运维工作,之前没怎么做过,对Linux不是那么的熟悉,这导致的主要问题是,当出现性能问题,不知道看那些指标,那些指标有什么含义。有不足的当然要恶补一下,所以就有了这篇文章。这篇文章只是抛砖引玉,改天有时间写篇,linxu性能监控,大体上就是服务器性能应该看那些指标,去定位问题所在。

内存

image

存储媒介

速度:L1/L2/ cache > 内存 > 固态 > 硬盘。一般的缓存路径是:硬盘or固态—>内存 —> L1/L2缓存。 将数据存入L1/L2缓存一般是那种比较底层的应用会采取的方式,例如linux的TLB(将虚拟地址到物理地址的映射缓存到 L1 cache中),加快地址转换的速度。

虚拟内存

虚拟内存是Linux管理内存的一种技术。它使得每个应用程序都认为自己拥有独立且连续的可用的内存空间。大体关系如下。

image

这里需要了解的:

  1. 虚拟内存的描述的结构叫memory mapping,主要描述了虚拟地址的起始位置,长度,权限,以及类型
  2. 虚拟内存关联的不一定是物理内存,还可以是磁盘,swap区。因为是映射,可以映射到各种存储媒介中去,这是虚拟内存强大的地方之一
  3. 虚拟内存由于是映射,所以可以先分配虚拟内存,到了使用时才分配真正的物理内存,这个叫延迟加载。大体的过程是这样子的。1. 读虚拟内存 —> 发现没有分配物理内存 —> 缺页中断 —> 分配物理内存 —> 与虚拟内存产生管理 —>再次读取。这样做是为了提高内存的使用效率。需要注意的是并不是任何情况下都是延迟加载的。
  4. 物理内存可以映射到不同的进程中的虚拟内存中去(多对多关系),所以可以实现不同的进程共享内存

交换空间

当系统物理内存吃紧时,Linux会将内存中不常访问的数据保存到swap上。一个看内存是否不够的重要指标swap的使用率

这里主要需要了解的是:

  1. 一般当需要使用到swap的时候,这说明系统内存不够用了,处理速度会各种慢,虽然服务暂时可用,但很慢!!!,分分钟和死掉没啥区别。
  2. 什么时候用swap, 什么时候不该用。结论是在内存勉强够用的情况下,可用使用swap,其它情况下不需要使用。内存不够的情况下,合理的做法是加内存。内存够的情况下swap没啥用处,除非需要休眠,但是服务器当然是24小时工作的,即便是内存泄露,让内核触发OOM Killer,重启也好过,服务变得很慢,处于假死状态。

page cache & buffer cache

cache和buffer都是对接两个速度不对称的设备一块区域,一般来说,cache是加速读,buffer是加速写的(处理数据产生的速度 > 数据写入的速度,中间加个buffer使用数据写入均匀化,每次写入更多的数据)。page cache和buffer cache都是存储到内存当中,page cache缓存的是文件系统中的内容,用来加速文件的读取,而buffer cache缓存的是块设备中内容,加速对块设备的写入。最后,cache&buffer,这两个是好东西,对于对接两个速度不对称的系统都可以用到。

这里需要了解一下的:

  1. 当系统中free的内存很小时,不代表真的内存不够用,当free的内存很小,buffer cache和page cache也都很小,此时才代表系统内存不够用了。
  2. 读写文件的路径: 读—> page cache —> buffer cache —> 磁盘 写—> page cache —> buffer cache —> 磁盘
  3. 可以手动的将page cache释放掉。先刷新cache中的内存到磁盘,再清除
image

Oom killer

当系统内存不够时,将会触发oom killer通过一定的算法选取一个进程来杀掉。注意了!!!不是内存使用最高的进程会被杀掉

这个需要了解的是

  1. 算法的权重与分数:/proc/[pid]/oom_adj, [-17, 15] -17表示禁止被kill(可以通过写入-17来达到禁止杀死的目的), 数字越大代表越容易被杀掉。分数: /proc/[pid]/oom_score 根据oom_adj算出来的,内部不够时选最高分的来杀掉。
  2. 查看被oom killer死掉的log: dmesg | grep -i 'killed process'

打印出分数最高的进程的shell脚本

image

内存碎片

  1. 外部碎片:未被分配的内存,由于太多零碎的不连续小内存,无法满足当前较大内存的申请要求
  2. 原因:频繁的分配与回收物理页导致大量的小块内存夹杂在已分配页面中间
  3. 内部碎片:已经分配的内存,却不能被利用的内存空间
  4. 缘由:所有内存分配必须起始可被4、8或16(体系结构决定)整除的地址或者MMU分页机制限制
  5. 实例:请求一个11Byte的内存块,系统可能会分配12Byte、16Byte等稍大一些的字节,这些多余空间就产生碎片

结语:简单的分享一下,还有很多知识没有讲到。想学习的朋友可以添加小编学习群813542856即可获得10套PDF以及大量学习资料。

相关文章

  • 从门外到门内:Linux基础知识,干货十足,打包带走!

    最近在兼职部分运维工作,之前没怎么做过,对Linux不是那么的熟悉,这导致的主要问题是,当出现性能问题,不知道看那...

  • 从门外到门内:Linux基础知识

    最近在兼职部分运维工作,之前没怎么做过,对Linux不是那么的熟悉,这导致的主要问题是,当出现性能问题,不知道看那...

  • 从门外到门内: redis

    相关资料: 官网 文档 好书: redis实战(书中的代码), Redis开发运维实践指南 好文: 关于Redis...

  • 门内•门外

    我紧握着这把发锈的门把,推开了这扇沉重的大门;门外面,有什么? “疯子。” 我被迫在精神病院里待了六年,与...

  • 门内·门外

    6:30am的闹钟响了! 对着镜子整理自己的那10分钟我习惯不急不慢。 吃下一碗老妈定时煮好的粥, 进房看一眼那对...

  • 门内,门外

    夜来了, 关上门。 门外是他们的世界, 像3d立体音效的大电影。 门内是我的世界, 像无声的黑白影片。

  • 现代诗·门

    门内门外 两个世界 门外流浪 门内安睡 门内是长江 门外是大海 那是海门 门内是家 门外是它 那是宅门 有看得见的...

  • 门内与门外

    门内与门外的智慧虽只隔着一扇门,却是差了不止万里! 学习《门内智慧“谋局者”》 真正让我认识到什么是—— 门外假传...

  • 门内门外

    只有一条路 却有那么多门 门外的是走廊 门内的是幻想 走廊的尽头挂着一扇窗 幻想的喘息吐出两条火光 窗子拥着一个女...

  • 门内门外

    住所的房屋隔音做得不好,总会传来隔壁邻居的各种动静。 楼下的邻居每天早出晚归。第一次听见动静是一天夜半时分有人大声...

网友评论

    本文标题:从门外到门内:Linux基础知识,干货十足,打包带走!

    本文链接:https://www.haomeiwen.com/subject/cfjcfqtx.html