我一直对此感到疑惑,但从未完全理解 32 位机器如何处理超过 4 GB 的RAM。我的意思是,没有更多的地址行了,对吗?
我什至知道在我们的设施中,我们有戴尔数据库服务器,机器可寻址 8 GB RAM 和 32 位版本的SQL Server。是不是类似于EMS内存的20地址线8086,使用了一个旋转内存的窗口?
我们使用了大量的 GPGPU 计算(主要使用 CUDA,但也使用一些 OpenCL)。通常,当用户运行代码时,代码仅在我们的一台主机上出现内存错误。我怀疑其中一张卡有问题。有时它会导致整个系统瘫痪,有时程序会崩溃。
全面测试 GPU 是否可能出现故障的最简单、最快和最彻底的方法是什么?
我知道有些程序是 nvidia 的 CUDA SDK 的一部分:
deviceQuery
nvidia-smi
Run Code Online (Sandbox Code Playgroud)
但我需要更彻底的东西。建议?经验?
谁能告诉我内存哪里去了:(不,这次既不是缓冲区也不是缓存)
# free
total used free shared buffers cached
Mem: 3928200 3868560 59640 0 2888 92924
-/+ buffers/cache: 3772748 155452
Swap: 4192956 226352 3966604
Run Code Online (Sandbox Code Playgroud)
顶部,按内存排序,降序:
top - 13:42:06 up 1 day, 3:47, 2 users, load average: 0.08, 0.12, 0.36
Tasks: 228 total, 1 running, 227 sleeping, 0 stopped, 0 zombie
Cpu0 : 2.0%us, 4.0%sy, 0.0%ni, 90.1%id, 0.0%wa, 0.0%hi, 4.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni, 0.0%id,100.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3928200k total, 3868020k used, 60180k free, 2896k buffers
Swap: 4192956k …Run Code Online (Sandbox Code Playgroud) 我需要一些帮助来确定我在服务器上的 Linux 下看到的内存带宽是否正常。这是服务器规范:
HP ProLiant DL165 G7
2x AMD Opteron 6164 HE 12-Core
40 GB RAM (10 x 4GB DDR1333)
Debian 6.0
Run Code Online (Sandbox Code Playgroud)
mbw在这台服务器上使用我得到以下数字:
foo1:~# mbw -n 3 1024
Long uses 8 bytes. Allocating 2*134217728 elements = 2147483648 bytes of memory.
Using 262144 bytes as blocks for memcpy block copy test.
Getting down to business... Doing 3 runs per test.
0 Method: MEMCPY Elapsed: 0.58047 MiB: 1024.00000 Copy: 1764.082 MiB/s
1 Method: MEMCPY Elapsed: 0.58012 MiB: 1024.00000 Copy: 1765.152 MiB/s …Run Code Online (Sandbox Code Playgroud) 我们使用在 Amazon EC2 上运行的 Windows 2008 R2 和 IIS 7。IIS 正在运行一个用 C# 编写的 .NET 应用程序。
我们遇到了性能问题,我想为应用程序提供更多内存,但我不知道该怎么做。如何控制 CLR 获得的内存量?
我是 IIS、.NET 和 CLR 的新手。如果我使用 Java,我将只使用 -Xmx 标志来增加 JVM 可用的内存(例如,-Xmx3000m 用于 3GB)。但是,我似乎无法弄清楚如何在 Windows 世界中做到这一点。
假设我有一个使用 200MB 内存的进程,它 fork()s:
python -c "import os; data='x'*200000000; os.fork(); raw_input()"
Run Code Online (Sandbox Code Playgroud)
像“top”这样的程序将显示每个进程使用 200MB,而 SHRd 内存很少,因此看起来好像这些进程总共使用了 400MB。但是,因为 fork() 为进程的内存页实现了写时复制 (COW),所以实际情况是进程总共只使用了 200MB。
为什么 top 不显示 COW 的内存比例?有没有办法让它这样做?或者我可以使用另一个命令吗?
注意:OSX 上的“top”似乎有一个 RSHRD 列,可以满足我的期望。我的问题是针对 Linux。
我正在寻找有关如何精确计算我的工作在我的集群上使用了多少 RAM 的一些指导。我的工作不是多线程的,而是在单个 CPU 上运行。
当我运行我的工作并运行“top”时,我可以看到它使用了这么多内存......
VIRT: 45.6g
RES: 38g
SHR: 9600
Run Code Online (Sandbox Code Playgroud)
这(纠正我错误的地方)对我来说意味着我正在使用 38 Gigs 的真实 RAM,以及 7.6 Gigs 的可能已被转移到交换的东西。大约 40 Gig 的数字是我正在测试的工具的作者所说的我的工作应该使用的数字。
当我从 SGE(使用 qstat 或 qacct)获得这些数字时,困惑就来了。
qacct -j 7270916
在这里我看到
mem 2768.453
maxvmem 4.078G
Run Code Online (Sandbox Code Playgroud)
然而,这些都没有接近我知道我正在使用的 45.6 gig 的 RAM(尽管 maxvmem 听起来确实应该代表 45.6 gig)。
在作业运行时,我尝试使用此命令
qstat -j 7270916
,其中看到了以下行:
usage 1: cpu=00:01:37, mem=168.12988 GBs, io=38.64676, vmem=1.665G, maxvmem=4.078G
Run Code Online (Sandbox Code Playgroud)
我想 mem 是运行中使用/释放/使用/释放的所有 RAM 的总和(它刚刚完成),但 maxvmem 仍然很低(远低于我预期的 45.6 gigs)。
所以我对 qcct 和 qstat 的使用都生成了与预期数字不一致的数字(我在顶部看到)。
有没有人有关于如何在运行完成后使用 SGE 命令获取有意义的 RAM 使用量的建议?
编辑:我使用的是 SGE 6.2u5
我有一个网络服务器,目前托管着两个 Wordpress 站点和一些基于 Java 的协作软件。服务器有 2G 内存,目前使用了大约 1.8G 的可用内存。现在这里的内容几乎是一个试点项目,流量可以忽略不计,所以我认为很明显我将需要更多内存。
我想知道,如果我要发布它,我如何根据它获得的流量来预测我的内存需求。我在谷歌上四处寻找,我发现的东西有点脆弱。在根据服务器上的基本(无流量)负载计算内存需求时,是否应该使用一种很好的启发式方法?
作为参考,输出free -m可以在下面看到:
total used free shared buffers cached
Mem: 2048 1832 215 0 0 0
-/+ buffers/cache: 1832 215
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
对我来说,这看起来像是实际使用的内存,并不是由于缓存或其他任何原因造成的错觉。
我认为我的协作软件的需求必须经过实验测试,所以这里free -m没有运行该软件:
total used free shared buffers cached
Mem: 2048 1109 938 0 0 0
-/+ buffers/cache: 1109 938
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
我解决这个问题的计划 B 是向服务器添加一堆交换空间,为其提供一些流量并根据交换使用的数量进行调整。我只是想知道是否有人有一个很好的经验法则来估计我应该提前计划多少内存……或者我的想法是否疯狂。
非常感谢(我对此非常陌生)。
我做了一些调查,发现这个可以计算和调整pm.max_children值
https://myshell.co.uk/blog/2012/07/adjusting-child-processes-for-php-fpm-nginx/
但例如:
如果我应用这个:
pm.max_children = 专用于 Web 服务器的总 RAM / 最大子进程大小
所以在我的情况下:
pm.max_children = 5120 / 80 = 64
但是如果我在每个 php-fpm 网站 conf 文件上添加pm.max_children = 64,这意味着每个网站都可以使用64个子进程X 1 个进程的大小(例如40mb)= 2560Mb
如果我们想象,同时所有 30 个网站都达到了 pm.max_children 值,我们将有:2560Mb(每个网站的最大值)x 30 个网站 = 76 800 Mb
我对么?
Si 是的,这意味着当许多网站托管在同一台服务器上时,我们必须将计算结果pm.max_children = 5120 / 80 = …
memory ×10
linux ×2
web-server ×2
apache-2.2 ×1
capacity ×1
cuda ×1
desktop ×1
gridengine ×1
hp ×1
iis-7 ×1
nginx ×1
numa ×1
performance ×1
php-fpm ×1
php7 ×1
top ×1
wordpress ×1
x86 ×1