正如大部分实内存可用来缓冲文件一样,系统的页面空间可由那些强制排除在 RAM 外的程序工作数据用作临时存储器。
假设您有一个程序,它很少或几乎不读取数据,可是却显示出 I/O 依赖性症状。更糟的是,实际时间占用户与系统时间之和的比率并不随连续运行而增加。程序可能是有内存限制的,并且它的 I/O 是针对调页空间的,也可能来源于此。检查这种可能性的方法显示在以下的
vmstatit shell 脚本中:
vmstat -s >temp.file # cumulative counts before the command
time $1 # command under test
vmstat -s >>temp.file # cumulative counts after execution
grep "pagi.*ins" temp.file >>results # extract only the data
grep "pagi.*outs" temp.file >>results # of interest
vmstatit 脚本总结了内容较多的 vmstat -s 报告,该报告提供了自系统启动以来大量系统活动的累积计数。
如果 shell 脚本如下执行:
# vmstatit "cp file1 file2" 2>results
结果如下:
real 0m0.03s
user 0m0.01s
sys 0m0.02s
2323 paging space page ins
2323 paging space page ins
4850 paging space page outs
4850 paging space page outs
调页统计信息前后相同,证实了我们对
cp 命令不受页面调度限制的看法。
vmstatit shell 脚本的一个扩展变量可以用来显示真实情况,如下:
vmstat -s >temp.file
time $1
vmstat -s >>temp.file
echo "Ordinary Input:" >>results
grep "^[ 0-9]*page ins" temp.file >>results
echo "Ordinary Output:" >>results
grep "^[ 0-9]*page outs" temp.file >>results
echo "True Paging Output:" >>results
grep "pagi.*outs" temp.file >>results
echo "True Paging Input:" >>results
grep "pagi.*ins" temp.file >>results
因为操作系统中的文件 I/O 是通过 VMM 处理的,所以
vmstat -s 命令将普通程序 I/O 报告为页面调进和页面调出。当
vmstatit shell 脚本的早期版本针对最近未读取的大文件的
cp 命令运行时,结果如下:
real 0m2.09s
user 0m0.03s
sys 0m0.74s
Ordinary Input:
46416 page ins
47132 page ins
Ordinary Output:
146483 page outs
147012 page outs
True Paging Output:
4854 paging space page outs
4854 paging space page outs
True Paging Input:
2527 paging space page ins
2527 paging space page ins
time 命令的输出证实了 I/O 相关性的存在。页面调进的增加显示了为满足 cp 命令必需的 I/O。页面调出的增加表明文件足够大,能从内存进行脏页(未必是它自身)的强制写入。没有累积调页空间 I/O 计数的变化的事实证明 cp 命令不会构建大到足以使测试机器的内存过载的数据结构。
该版本的 vmstatit 脚本报告 I/O 的顺序是有意图的。典型程序读文件输入,然后写文件输出。另一方面,页面调度活动通常从写出不合适的工作段页面开始。只有当程序试图访问时页面才会被读回。自系统引导以来,测试系统经历的调页空间页面调出几乎是调页空间页面调进的两倍,这一事实表明至少有一些运行于该系统的程序已将数据保存在程序结束之前不会再次访问的内存中。内存限制程序提供了更多信息。另请参阅内存性能。
为了显示内存限制对这些统计信息的影响,下面的示例观察有足够内存(32 MB)的环境下的某个给定命令,然后用
rmss 命令人为收缩系统(请参阅
使用 rmss 命令进行内存需求评估)。以下命令序列
# cc -c ed.c
# vmstatit "cc -c ed.c" 2>results
先在内存中预先准备好 7944 行的源文件和 C 编译器的可执行文件,然后评测第二步执行的 I/O 活动:
real 0m7.76s
user 0m7.44s
sys 0m0.15s
Ordinary Input:
57192 page ins
57192 page ins
Ordinary Output:
165516 page outs
165553 page outs
True Paging Output:
10846 paging space page outs
10846 paging space page outs
True Paging Input:
6409 paging space page ins
6409 paging space page ins
显然,不存在 I/O 限制。甚至没有读源代码必需的任何 I/O。如果接下来发出下列命令:
# rmss -c 8
将机器的有效大小更改为 8 MB,然后执行相同顺序的命令,会得到下面的输出:
real 0m9.87s
user 0m7.70s
sys 0m0.18s
Ordinary Input:
57625 page ins
57809 page ins
Ordinary Output:
165811 page outs
165882 page outs
True Paging Output:
11010 paging space page outs
11061 paging space page outs
True Paging Input:
6623 paging space page ins
6701 paging space page ins
下面列示了 I/O 相关性的症状:
- 使用的时间比总 CPU 时间长
- 在第 n 次执行命令时有大量常规 I/O
使用的时间比无内存限制的情况下还要长以及大量调页空间 I/O 的存在,这一事实阐明了编译器受到不足内存的妨碍。
注: 该示例说明了内存限制的影响。由于没有努力减少其他进程的内存使用,所以在这种环境下强制编译器调页的绝对大小是没有意义的评估。
为避免在下次重新启动之前使用经人为缩减的机器,请运行:
# rmss -r
来将 rmss 命令隔离的内存释放回操作系统,从而将系统恢复至通常容量。
相关推荐
白色大气风格的旅游酒店企业网站模板.zip
python实现用户注册
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
内容概要:文档名为《平方表,派表集合.docx》,主要内容是1至1000的平方值以及1至1000与π的乘积结果。每个数字从1开始,逐步增加至1000,对应地计算了平方值和乘以π后的值。所有计算均通过Python脚本完成,并在文档中列出了详细的计算结果。 适合人群:需要进行数学计算或程序验证的学生、教师和研究人员。 使用场景及目标:用于快速查找特定数字的平方值或其与π的乘积,适用于教学、科研及程序测试等场景。 阅读建议:可以直接查阅所需的具体数值,无需从头到尾逐行阅读。建议在使用时配合相应的计算工具,以验证和拓展数据的应用范围。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
白色大气风格的健身私人教练模板下载.zip
白色简洁风的商务网站模板下载.zip
白色大气风格的前端设计案例展示模板.zip
内容概要:本文介绍了两个有趣的圣诞树项目方向:一是使用Arduino或Raspberry Pi开发可编程的圣诞树灯光控制系统;二是基于MATLAB开发一个圣诞树模拟器。前者通过硬件连接、编写Arduino/Raspberry Pi程序、MATLAB控制程序来实现LED灯带的闪烁;后者则通过创建圣诞树图形、添加动画效果、用户交互功能来实现虚拟的圣诞树效果。 适合人群:具备基本电子工程和编程基础的爱好者和学生。 使用场景及目标:①通过硬件和MATLAB的结合,实现实际的圣诞树灯光控制系统;②通过MATLAB模拟器,实现一个有趣的圣诞树动画展示。 阅读建议:读者可以根据自己的兴趣选择合适的项目方向,并按照步骤进行动手实践,加深对硬件编程和MATLAB编程的理解。
白色扁平风格的温室大棚公司企业网站源码下载.zip
Navicat.zip
内容概要:本文详细介绍了主成分分析(PCA)技术的原理及其在Scikit-learn库中的Python实现。首先讲解了PCA的基本概念和作用,接着通过具体示例展示了如何使用Scikit-learn进行PCA降维。内容涵盖了数据准备、模型训练、数据降维、逆转换数据等步骤,并通过可视化和实际应用案例展示了PCA的效果。最后讨论了PCA的局限性和参数调整方法。 适合人群:数据科学家、机器学习工程师、数据分析从业者及科研人员。 使用场景及目标:适用于高维数据处理,特别是在需要降维以简化数据结构、提高模型性能的场景中。具体目标包括减少计算复杂度、提高数据可视化效果和改进模型训练速度。 其他说明:本文不仅提供了详细的代码示例,还讨论了PCA在手写数字识别和机器学习模型中的应用。通过比较原始数据和降维后数据的模型性能,读者可以更好地理解PCA的影响。
VOC格式的数据集转COCO格式数据集 VOC格式的数据集转YOLO格式数据集。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
数字信号处理课程设计.doc
白色扁平化风格的灯饰灯具销售企业网站模板.zip
华豫佰佳组合促销视图.sql
白色大气风格的商务团队公司模板下载.zip
白色大气风格的VPS销售网站模板.zip