1、请您根据本课程所学内容总结梳理出一个精简的Linux系统概念模型,最大程度统摄整顿本课程及相关的知识信息,模型应该是逻辑上可以运转的、自洽的,并举例某一两个具体例子(比如读写文件、分配内存、使用I/O驱动某个硬件等)纳入模型中验证模型。
2、然后将一个应用程序放入该系统模型中系统性的梳理影响应用程序性能表现的因素,并说明原因。
3、产出要求是发表一篇博客文章,长度不限,1要简略,2是重点,只谈自己的思考和梳理,严禁引用任何资料(包括本课程的资料)造成文章虚长。
对该模型的解读:
这个模型是从上到下的,上面为用户空间的部分,下面为内核空间的部分。glibc库函数本质上是对系统调用的简单封装,可以通过调用库函数来使用系统调用。
进程管理包括了多个方面,如进程的描述和创建和进程的切换,进程的切换又涉及到上课所讲的进程上下文切换和中断上下文切换。
其中中断这个概念在整个系统中都极为常见,系统调用通常涉及用户态到内核态的切换,这就涉及到了中断。中断还与时钟相关,用于定时测量。
设备驱动是硬件与软件之间的桥梁,更接近底层,更接近硬件。
读文件:(加粗字体为上述模型中模块名)
写文件:(与读文件操作的前四步都非常接近)
采用性能分析工具perf进行分析。
程序:
int array[10000][10000];
int main() {
for(int i = 0; i < 10000; ++i) {
for(int j = 0; j < 10000; ++j) {
++array[j][i];
}
}
return 0;
}
该程序涉及上述系统中的:应用程序、内存管理
perf stat --repeat 5 -e cache-misses,cache-references,instructions,cycles ./perfStatTest
使用上述命令对程序进行时间采样分析。
(还可以通过指定命令参数获取其他感兴趣的事件,如:进程切换次数、CPU利用率、CPU迁移数等。)
在运行上述命令后:
出现了不支持的情况,网上一查,需要设置以下选项:
但设置好了之后发现无法启动虚拟机
于是只能放弃进一步的探索。
结论:根据上述实验,可得知,影响应用程序性能表现的因素有:cache命中率、CPU利用率、进程切换次数等。改变读取数组的方式,会影响cache命中率,从而影响整体的效率。
总的来说可以分为四个方面:CPU、内存、IO、网络,CPU方面的因素包括CPU频率、CPU数量等;内存方面的因素包括内存大小、内存频率等;IO方面的因素包括IO请求数量等;网络带宽也影响着涉及网络的应用程序的运行效率。
原文:https://www.cnblogs.com/galun1998/p/14779186.html