我正在为大学做一个小项目来比较3种不同的Linux发行版及其资源命中,以及它们如何处理进程。我被建议主要使用bash而不是C ++或perl,因为教授认为这会导致较低的资源损失。
我主要来自Java背景,当然我熟悉线程。我想知道的是,是否可以为进程分配一定的总内存并为每个进程分配该内存和优先级?我想模仿低内存的情况,并且当内存不足时需要杀死或终止非紧急进程,并且这一切都被控制为我的bash对话框中的一个选项。 我知道这在Java中是可能的,因为我在几个月前使用生产者消费者示例做了一个项目。是否可以在Linux服务器中执行此操作?我根本没有使用GUI或桌面版本,因为项目禁止它。
我还想知道我是否可以同时进行某项压力测试,例如iostat,并比较它如何处理压力和非压力结果。是否也可以在bash中控制它?
答案 0 :(得分:1)
我想你要找的是cgroups。您可以为整个cgroup进程组设置最大内存(以字节为单位)。
另一种简单的方法是让新用户将所有进程置于用户之后,并为用户设置ulimit
luser hard as ?
在limits.conf里面
答案 1 :(得分:0)
bash使您能够自动执行您可以从命令行执行的任何操作,您可以在该命令行中访问分配内存,检查内存使用情况等所需的所有工具...所以是的,请使用bash - 除此之外使用更高级别的语言,他们只需通过自己的库调用相同的底层操作系统托管数据结构......您可能会惊喜地发现命令行实用程序的强大功能......想想使用bash作为快速原型化方法,如果你发现你需要复杂的数据处理,你可能需要在需要时调用简单的c二进制文件
....这是gnuplot介绍的快速简介
how to plot data from a file containing one vertical column of numbers :
from command line :
gnuplot
then at gnuplot> prompt : plot "some-file-with-single-vertical-column"
to plot 3D data - IE. frequency + offset + difference :
To view tsv files (3 columns : freq offset difference) use
terminal :
gnuplot
splot 'freq_offset_diff_20130711_211554_pass_01.tsv' using 1:2:3 with points palette pointsize 3 pointtype 7