centos – 广泛使用RAM时服务器计算速度减慢

我在非常具体的情况下遇到服务器速度下降的问题.事实是:

> 1)我使用计算应用WRF(天气研究和预测)
> 2)我使用双Xeon E5-2620 v3和128GB RAM(NUMA架构 – 可能与问题有关!)
> 3)我用mpirun -n 22 wrf.exe运行WRF(我有24个逻辑核心可用)
> 4)我使用Centos 7和3.10.0-514.26.2.el7.x86_64内核
> 5)在计算性能方面,Everthing工作正常,直到有一件事情发生:
> 5a)linux文件缓存获取一些数据,或
> 5b)我使用tmpfs并用一些数据填充它

在5a或5b场景中,我的WRF突然开始减速,有时甚至比正常慢约5倍.

> 6)RAM没有被交换,甚至没有接近发生,在最坏的情况下我有大约80%的RAM空闲!
> 7)/etc/sysctl.conf中的vm.zone_reclaim_mode = 1似乎有助于延迟5a场景中的问题
> 8)回声1> / proc / sys / vm / drop_caches在5a场景中彻底解决问题,将WRF性能恢复到最大速度,但只是暂时直到文件缓存再次获取数据,所以我在cron中使用这个命令(别担心,没关系,我仅将计算机用于WRF,并且不需要文件缓存才能以完全的性能工作)
> 9)但是,上面的命令在5b场景中仍然没有做任何事情(当我使用tmpfs作为临时文件时)
> 10)只有当我手动清空tmpfs时,才能在5b场景中恢复perfomanace
> 11)这不是WRF或mpi问题
> 12)这只发生在这一种计算机类型上,我管理了很多相同/类似的purporse(WRF).只有这一个有完整的NUMA架构,所以我怀疑它有它的东西
> 13)我也怀疑RHEL内核有这个但是不确定,没有尝试重新安装到不同的发行版中
> 14)numad和numactl选项调用像“numactl -l”这样的mpirun,没有任何区别

如果您有任何想法试图避免这些减速,请告诉我.

在关注这个问题的一些“相关”链接后,有一个想法来找我.透明巨大的页面可以成为这个问题的根源吗?一些文章强烈建议THP在NUMA系统上不能很好地发挥作用.

我建议启用numad服务:
yum install numad
systemctl enable numad
systemctl start numad

numad应该能够自动处理记忆位置.像进程这样的情况在第一个NUMA节点的CPU上运行,但它的数据在第二个NUMA节点的本地RAM中,不应再发生(除非所需内存量大于单个NUMA节点本地RAM的容量).

我还建议使用配置文件配置调优服务,这与您的使用方案最匹配.您必须测量差异并选择最佳(或者您可以创建一些自定义).

也许我已经找到了节点上奇怪行为的原因.我搜索了mpirun并找到了手册页:

https://www.open-mpi.org/doc/current/man1/mpirun.1.php

写道:

Quick Summary

If you are simply looking for how to run an MPI application,you probably want to use a command line of the following form:
% mpirun [ -np X ] [ –hostfile ]
This will run X copies of in your current run-time environment (if running under a supported resource manager,Open MPI’s mpirun will usually automatically use the corresponding resource manager process starter,as opposed to,for example,rsh or ssh,which require the use of a hostfile,or will default to running all X copies on the localhost),scheduling (by default) in a round-robin fashion by CPU slot. See the rest of this page for more details.

Please note that mpirun automatically binds processes as of the start of the v1.8 series. Three binding patterns are used in the absence of any further directives:

Bind to core:
when the number of processes is <= 2

Bind to socket:
when the number of processes is > 2

Bind to none:
when oversubscribed

If your application uses threads,then you probably want to ensure that you are either not bound at all (by specifying –bind-to none),or bound to multiple cores using an appropriate binding level or specific number of processing elements per application process.

在n = 22的情况下,没有应用绑定,可以重新定位线程.您可以尝试外部CPU绑定(与任务集一样).你必须做实验.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor&#160;1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep &#39;Time zone&#39;查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim&#160;/etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=&quot;static&quot; ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// &lt;summary&gt; /// 取小写文件名后缀 /// &lt;/summary&gt; /// &lt;param name=&quot;name&quot;&gt;文件名&lt;/param&gt; /// &lt;returns&gt;返回小写后缀,不带“.”&lt;/ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start &amp; nohup ./kibana &amp;
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的&#160;Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程,&#160;ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属