虽然我相信Windows Server 2003处理进程的工作集有两个不同的问题。 首先,当控制台会话的顶层窗口被最小化时,它们的工作集被修剪,有GUI应用程序运行。 我知道使用GUI运行服务器进程是非常不寻常的,但是这些是传统应用程序做重要的事情,我不能做任何事情。 其次,长时间运行的数据库服务器在客户端连接时分配大量内存,但在另一个客户端连接之前不会触及该内存。 与此同时,有好几天可能会过去,操作系统似乎认为这是足够的理由来削减该进程的工作集。 在这两种情况下,都有足够的物理内存(比应用程序需要多几GB),所以我希望Windows不要修剪它们的工作集。 有没有一个设置来configuration这个? 这些都是第三方应用程序,所以更改内存分配或locking内存页面不是可行的选项。
我正在寻找一些关于如何精确计算我的作业正在我的集群上使用多less内存的指导。 我的工作不是multithreading的,只能运行在一个CPU上。 当我运行我的工作,并运行“顶部”,我可以看到,它使用这么多的RAM … VIRT: 45.6g RES: 38g SHR: 9600 哪些(纠正我在哪里我错了)对我来说意味着我正在使用38 Gig的真正的RAM和7.6 Gig的东西,可能已被移动交换。 大约40 Gigs的数字是我testing的工具的作者说我的工作应该使用。 当我从SGE(使用qstat或qacct)获取这些数字时,就会出现混乱。 qacct -j 7270916在这里我看到 mem 2768.453 maxvmem 4.078G 然而,这些都不是接近我正在使用的45.6G内存(尽pipemaxvmem听起来像是真的应该代表45.6的演出)。 当作业正在运行时,我尝试使用这个命令qstat -j 7270916在其中我看到了一行: usage 1: cpu=00:01:37, mem=168.12988 GBs, io=38.64676, vmem=1.665G, maxvmem=4.078G 我猜这个mem是在运行过程中使用/释放/使用/释放的所有内存的总和(但刚刚完成),但是maxvmem仍然非常低(远远低于我预期的45.6次演出)。 所以我使用qcct和qstat都会产生与预期数字不一致的数字(我在上面看到)。 有没有人有build议如何获得内存使用率数字,在运行结束后使用SGE命令是有意义的? 编辑:我正在使用SGE 6.2u5
我们使用了大量的GPGPU计算(主要是使用CUDA,但是使用了一些OpenCL)。 通常,当用户运行代码时,代码错误只在我们的一台主机上出现内存错误。 我怀疑其中一张卡有故障。 有时会导致整个系统崩溃,有时候这个程序就会被炸毁。 什么是最简单,最快,最彻底的方法来全面testingGPU可能的故障? 我知道有一些程序是NVIDIA的CUDA SDK的一部分: deviceQuery nvidia-smi 但是我需要更彻底的东西。 build议? 经验?
这台机器有大量的交换,但有时偶尔会被杀手杀死。 任何人都可以解释这种行为,更重要的是如何保持它的发生? Dmesg输出: python invoked oom-killer: gfp_mask=0x1200d2, order=0, oomkilladj=4 Pid: 13996, comm: python Not tainted 2.6.27-gentoo-r8cluster-e1000 #9 Call Trace: [<ffffffff8025ab6b>] oom_kill_process+0x57/0x1dc [<ffffffff802460c7>] getnstimeofday+0x53/0xb3 [<ffffffff8025ae78>] badness+0x16a/0x1a9 [<ffffffff8025b0a9>] out_of_memory+0x1f2/0x25c [<ffffffff8025e181>] __alloc_pages_internal+0x30f/0x3b2 [<ffffffff8026fea0>] read_swap_cache_async+0x48/0xc0 [<ffffffff8026ff6f>] swapin_readahead+0x57/0x98 [<ffffffff80266d0e>] handle_mm_fault+0x408/0x706 [<ffffffff8057da33>] do_page_fault+0x42c/0x7e7 [<ffffffff8057baf9>] error_exit+0x0/0x51 Mem-Info: Node 0 DMA per-cpu: CPU 0: hi: 0, btch: 1 usd: 0 CPU 1: hi: […]
情况 我遇到一个PHP脚本的问题,得到以下错误信息: Fatal error: Out of memory (allocated 359923712) (tried to allocate 72 bytes) in /path/to/piwik/core/DataTable.php on line 969 我正在运行的脚本是: /path/to/piwik/misc/cron/archive.sh 我假设数字是字节,这意味着总数大约是360MB。 对于所有的意图和目的,我已经增加了服务器上的内存限制远远高于360MB,但这是数字(给出或占用一个字节)它始终如一地出错。 请注意 :这个问题不是关于在脚本中修复内存泄漏问题,也不是为什么脚本本身使用这么多的内存。 该脚本是Piwik存档过程的一部分,所以我不能修正任何内存泄漏等。有关此脚本的更多信息以及为什么增加内存限制,请参阅“如何设置自动归档” 这个问题 考虑到脚本正试图使用超过360MB的内存,我无法改变,为什么我似乎不可能增加我的服务器上可用的内存量? 6月23日更新 :请参阅下面的“我试过的”>“增加Linux的每进程内存限制”如果我设置了ulimit -v 1024000 ,那么使用ulimit -v检查它是否正确。 '1024000'。 如果我再次运行这个脚本,它将会进一步发展,但是最终会以相同的内存限制(〜360MB)出错。 如果我立即检查ulimit -v ,它已经重置为原始值'524288'。 这看起来好像可能是问题的根源。 我试过了 增加PHP的memory_limit 鉴于php.ini文件: php -i | grep php.ini Configuration File (php.ini) Path => /usr/local/lib Loaded […]
我有一个godaddy服务器已经变得没有反应周期性。 这是很难排除故障,因为当它变得没有响应时,我不能ssh进入它。 我想通过添加一个cron作业来pipe理输出从“top”到每5分钟的日志文件。 下一次,我没有响应后,我打开电源循环,我检查了这些日志,发现内存已经超出了,但交换大部分是未使用的。 我正在努力减less这台机器上两台应用程序服务器的内存使用率(结果是有太多的连接被打开了,每台服务器用完了30米,所以打开服务器后,服务器耗尽了内存) d真的很想知道如何确保我可以ssh进入机器。 如果交换文件没有满,那么我会认为服务器有足够的空间来响应,即使这样做太慢了。 有什么办法可以保留一些内存,这样我总是可以进入机器? 以下是服务器正常运行时的样子: top – 15:13:21 up 3:12, 2 users, load average: 0.15, 0.30, 0.33 Tasks: 127 total, 1 running, 126 sleeping, 0 stopped, 0 zombie Cpu(s): 2.4%us, 1.8%sy, 0.0%ni, 95.7%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 2064980k total, 1611252k used, 453728k free, 45852k buffers Swap: 2096472k total, 0k used, […]
我们使用Newrelic来衡量我们的Python / Django应用程序的性能。 Newrelic报告说,在我们的系统中,“Memcached”平均需要12ms来响应命令。 深入到前十几个Web视图(按请求数),我可以看到一些Memcache get占用了30ms ; 我找不到一次使用Memcache get返回时间不到10ms 。 有关系统架构的更多细节: 目前我们有四个应用服务器,每个应用服务器都有一个memcached成员。 所有四个memcached成员都参与一个memcache群集。 我们正在云托pipe提供商上运行,所有stream量都在“内部”networking上运行(通过“内部”IP) 当我从一个应用程序服务器ping到另一个应答在~0.5ms Memcached的响应时间不是10ms吗? 据我所知,如果你认为“Memcache太慢”,那么“你做错了” 。 那么我做错了吗? 以下是memcache-top命令的输出: memcache-top v0.7 (default port: 11211, color: on, refresh: 3 seconds) INSTANCE USAGE HIT % CONN TIME EVICT/s GETS/s SETS/s READ/s WRITE/s cache1:11211 37.1% 62.7% 10 5.3ms 0.0 73 9 3958 84.6K cache2:11211 42.4% 60.8% 11 […]
我更新了这个post,因为我更换了处理器,但是我的问题的核心(不幸的是结果也一样)。 我build立了我的第一个FreeNAS盒子,并且想要使用ECC RAM,因为我想存储关键数据。 因为我正处于预算之内,所以我希望能够买到仍然支持ECC RAM的最经济实惠的解决scheme。 经过一番研究,我发现,我需要一个支持ECC的主板,内存和CPU。 我select的主板是具有C232芯片组,DDR4和LGA1151插槽的“Gigabyte X150M-Pro ECC”。 我还购买了由Kingston制造的型号为“KVR21E15S8K2 / 8”( 规格表 )的两个DIMM套件。 Gigabyte发布了一系列经过testing的内存模块,而我的模块似乎也支持ECC( 支持的模块列表 )。 由于我在预算中,我需要一个支持ECC的经济实惠的Skylake CPU。 据英特尔赛扬G3900支持ECC,所以我去了那一个。 在构build计算机之后,我想确认我的系统是否正在运行ECC内存,然后进入主板的BIOS。 从各种互联网网站,我发现一些主板有一个特殊的部分 ,应该告诉ECC是否工作,但我的主板似乎没有。 我检查了所有的菜单,我找不到类似的部分。 在做了一些更多的研究之后 ,在Unix和Linux的stackexchange上发现了一个没有解决我的问题的post 。 我尝试了最新的memtest86+ ,从我可以告诉,甚至没有显示“ECC”的价值。 我尝试了Puget系统使用的显示“ECC:off”的较旧的4.20版本。 然而,在阅读之前提到的post之后,我怀疑它说的是实话(也许这就是为什么该function被删除?)。 这两个版本也没有读出DIMM的正确速度和延迟,这增加了我对memtest86+怀疑。 如果ECC正在工作,另一个stream行的方法是发出dmidecode -t memory命令并读出Total Width和Data Width 。 我的结果分别是128 Bits和64 Bits 。 输出的一部分显示了具有Error Correction Type: Single-bit ECC的键 – 值对的存储器arrays的细节。 我预计Total Width为72 bits ,所以我认为它可能与双通道有关,并将内存模块移到两个相邻的插槽中,以防止双通道,但结果是一样的。 这是dmidecode -t […]
我想测量程序在执行过程中使用的总内存(如RAM)。 理想情况下,就像运行程序的time一样,并在退出时打印统计信息。 在unix / linux / bsd世界中是否有这样的标准工具? 谢谢。 编辑 : 我试图configuration的程序需要几分之一秒才能执行,所以任何暗示“在运行时检查这个”都是行不通的。 这就是为什么我要求一个“时间”像工具。
我在CentOS服务器上运行繁重的应用程序,我看到一个奇怪的内存行为。 这里是一个munin图的快照: 正如您所看到的,提交内存的数量逐渐增加,导致交换文件被使用。 令我感到奇怪的是,不活跃的内存量也在不断增长。 这是我的理解,不活动的内存实际上是释放内存,但尚未清理的操作系统,并放回到可用内存池。 似乎内存不足是由于缺乏清理而造成的,但我可能是错的。 你能提供一些技巧来找出问题的原因,并且/或者让CentOS回收不活动的内存? 谢谢。 一些额外的信息: 1)我有一个tmpfs挂载在/ tmp和存储在那里的文件数量增长(但它是非活动内存量的两倍)。 2)cat / proc / meminfo(在比图像更晚的阶段)给出: MemTotal: 14371428 kB MemFree: 1207108 kB Buffers: 35440 kB Cached: 4276628 kB SwapCached: 785316 kB Active: 9038924 kB Inactive: 3902876 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 14371428 kB LowFree: 1207108 kB SwapTotal: 10223608 kB SwapFree: 6438320 kB […]