如何限制linux所有进程可使用的总内存?
下面的shell脚本可以实时的监控系统中各个进程的CPU和内存的占用情况,用于限制进程CPU占用率更加合理。
#!/bin/shPIDS=`top -bn 1 | grep "^ *" | awk ’{ if($9 > 50 || $10 > 25 && id -u $2 > 500) print $1}’`for PID in $PIDSdo renice +10 $PID echo "renice +10 $PID"done能够将这个脚本放到cron中运行,比如每分钟检查一次,只需以root身份添加crontab项:
#crontab-e*****limit.sh 以后每个一分钟就会检查一次,调整占用50%以上CPU或25%内存的进程的nice值,从而使这样的进程优先级变低,被调度的机会减少,同时会向root发邮件提示该进程被调整过。
但是,限制内存使用最好还是用PAM,RedHat能够在/etc/security/limits.conf中配置。
linux线程共享和进程内存的关系?
区别和联系:
1、进程是独立运行的实体,有独立的资源分配;
2、同一进程的线程之间共享进程的资源;
3、所有的进程至少有一个执行线程;
4、线程的创建和切换代价比进程的小;线程间的通信方法:1、同一进程的线程之间通信的最简单办法就是使用全局变量;2、不同进程的线程之间通信需要通过下面进程间的通信来实现;进程间的通信方法:1、管道2、信号量3、共享内存4、消息队列5、套接字
如何使用Linux命令行查看Linux服务器内存使用情况?
查看Linux服务器内存查看Linux服务器下的内存使用情况,可以使用命令free -m。注意此命令只在Linux下有效,在FreeBSD中没有此命令。命令如下所示:
查看Linux服务器内存used:已经使用的内存数free:空闲的内存数shared:多个进程共享的内存总额-buffers/cache:(已用)的内存数,即used-buffers-cached+buffers/cache:(可用)的内存数,即free+buffers+cached得出结论:可用内存的计算公式为:可用内存=free+buffers+cached,即2551MB+268MB+917MB=3737MB
如何读取linux内核共享内存的值?
我们可以修改shmmax内核参数,使SGA存在于一个共享内存段中。 通过修改/proc/sys/kernel/shmmax参数可以达到此目的。 #echo1073741824>/proc/sys/kernel/shmmax #more/proc/sys/kernel/shmmax 1073741824这里设为1G。 对于shmmax文件的修改,系统重新启动后会复位。可以通过修改/etc/sysctl.conf使更改永久化。 在该文件内添加以下一行kernel.shmmax=1073741824这个更改在系统重新启动后生效. 1、设置SHMMAX SHMMAX 参数定义共享内存段的最大尺寸(以字节为单位)。在设置SHMMAX时,切记SGA的大小应该适合于一个共享内存段。SHMMAX设置不足可能会导致以下问题: ORA-27123:unabletoattachtosharedmemorysegment 您可以通过执行以下命令来确定SHMMAX的值: #cat/proc/sys/kernel/shmmax 33554432 SHMMAX的默认值是32MB。我一般使用下列方法之一种将SHMMAX参数设为2GB: 通过直接更改/proc文件系统,你不需重新启动机器就可以改变SHMMAX的默认设置。我使用的方法是将以下命令放入/etc/rc.local启动文件中: #>echo”2147483648″>/proc/sys/kernel/shmmax 您还可以使用sysctl命令来更改SHMMAX的值: #sysctl-wkernel.shmmax=2147483648 最后,通过将该内核参数插入到/etc/sysctl.conf启动文件中,您可以使这种更改永久有效: #echo”kernel.shmmax=2147483648″>>/etc/sysctl.conf 2、设置SHMMNI 我们现在来看SHMMNI参数。这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是4096。这一数值已经足够,通常不需要更改。 您可以通过执行以下命令来确定SHMMNI的值: #cat/proc/sys/kernel/shmmni 4096 3、设置SHMALL 最后,我们来看SHMALL共享内存内核参数。该参数控制着系统一次可以使用的共享内存总量(以页为单位)。简言之,该参数的值始终应该至少为: ceil(SHMMAX/PAGE_SIZE) SHMALL的默认大小为2097152,可以使用以下命令进行查询: #cat/proc/sys/kernel/shmall 2097152 SHMALL的默认设置对于我们的Oracle9iRAC安装来说应该足够使用。 注意:在i386平台上RedHatLinux的页面大小为4096字节。但是,您可以使用bigpages,它支持配置更大的内存页面尺寸。
查看linux的内存使用情况?
方法一:ps命令可以显示各个进程的内存使用情况、以及更详细的物理内存使用情况和虚拟内存使用情况。你可以使用“–sort”选项对进程进行排序,例如按RSS进行排序:
用法示例:$ ps aux –sort -rss
方法二:top命令显示了每个进程的内存动态使用率。它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的报告。
用法示例:$ top
方法三:查看虚拟文件/proc/meminfo可以查看内存的总体使用情况。这个动态更新的虚拟文件实际上是许多其它内存相关工具(如:free/ps/top)等的组合显示。但并不包含某一具体进程的内存使用情况。
用法示例:$ cat /proc/meminfo