关于free

比较新一点版本的free添加了available列,可以直接看出还有多少内存可用

 

比较老一点版本的free为:

3.3.9 版本的free就没有available列,另外,和内核版本也有关系,3.14 以后的内核是支持的; 2.6.27+ 的内核上是模拟出来的

man free

available
Estimation of how much memory is available for starting new applications, without swapping. Unlike
the data provided by the cache or free fields, this field takes into account page cache and also
that not all reclaimable memory slabs will be reclaimed due to items being in use (MemAvailable in
/proc/meminfo, available on kernels 3.14, emulated on kernels 2.6.27+, otherwise the same as free)

mysqld与mmap

不知不觉中,我的博客的mysql用的内存越来越多了,我的1核1G的主机有点儿内存不太够用了,一个偶尔的操作,mysqld被oom了,重启就报错,大概意思是:

因为我的机器只有1G内存,而且没有swap,mmap想map大于1g的文件,结果失败了;

比较大气的解决办法是: 加内存

比较小气的解决办法是: 加swap

关于容器oom

缘起:

偶尔有同学反应容器很慢,查看容器状态发现内存没用完了;问题是,oom命名是开启的,为什么不杀进程呢?

其实,我忽略了一个问题,为了不必要的内存浪费,我给每个容器都配备了相当多的swap,oom是发生在连swap都被用完的情况下的;上面的情况是:内存用完了,但是swap还足够,开始大量使用swap,于是乎,反应就很慢;不仅如此,swap引发的设备IO,是不受单个容器的IO配额限制的,在没有控制的情况下疯狂使用swap会导致其他容器也会变慢

结论:

容器之间的资源隔离是相对的,总是会有某些情况下,容器之间会相互影响的;有些场景下,这些问题都无所谓,有些情况下就是致命的

关于过程改进

“过程改进”是多么抽象的一个词语,没有说什么过程,也没有说改进什么,简直没法执行。

是的,过程改进对人的要求还是比较高的,首先,你要能发现需要改进的过程,然后你还要发现如何去改进;这里对人的一个重要要求就是: 你愿意。

我几乎没做一件事情都能发现做法需要优化,但是,很多人重复100遍都不会去思考是否可以改进一下,反而习以为常了。

有些事情,昨天这么做可能已经是很好的了,但是,今天还这么做可能就很落后了,所以,人要在实践的过程中不断地思考,不断地改进。

另外,能否进行“过程改进”和人的能力也有直接关系,对有些人来说,能正确执行现有流程已经是很高的要求了,改进是不可能的。

再者,也有人觉得,我已经觉得自己很优秀了,不需要改进了。

 

如何才能让每个人都积极地思考过程改进呢????