linux的各个子系统
Linux基本的子系统主要有CPU、Memory、IO、Network。
在这些子系统中,它们之间相互之间高度依赖。不论什么一个子系统的高负载都会引起其它子系统出现故障。
比如:
大量的页调入请求对内存造成堵塞
网卡的大吞吐量造成CPU开销
CPU开销造成内存请求队列
大量从内存来的磁盘写请求造成CPU和IO通道的开销
而为了优化系统,我们必须定位瓶颈在哪。即使问题看起来像是某个子系统引起,也有可能是由于其他子系统高负载导致。
为了明确从哪里開始优化瓶颈,首要工作就是分析眼下系统的行为特点。不论什么系统的应用通常分为例如以下两类:
I/O范畴:IO范畴的应用须要高负荷地使用内存和下层的存储系统。由于IO范畴的程序在内存中处理大量数据,它并不太依赖CPU和网络(除非是网络存储系统)。IO范畴的程度使用CPU资源来产生IO请求,接着CPU通常进入睡眠状态。数据库应用通常属于IO范畴。
CPU范畴:CPU范畴的应用须要高负荷地使用CPU。CPU范畴的应用须要CPU批量处理请求和数学计算。大量webserver,邮件server,以及其他渲染计算server通常属于CPU范畴。