Questions tagged «memory»

在计算中,内存是指计算系统的状态信息,因为它在某些物理结构中保持活动状态。

1
从/ proc / pid / smaps获取有关进程的内存使用情况的信息
对于中的给定过程/proc/<pid>/smaps,对于给定的映射条目,为: Shared_Clean Shared_Dirty 私人清洁 私人脏话 是Shared_Clean+ Shared_Dirty与其他进程共享的内存量吗?就像共享RSS? 同样,Private_Clean+ 仅可用于一个进程Private_Dirty的内存量吗?就像私人RSS? PSS值是否= PrivateRSS +(SharedRSS /共享它的进程数)? 阅读此链接后还有其他问题:LWN 现在,让我们讨论整个过程,我们正在查看其smap条目。 我注意到,如果我这样做Shared_Clean+ Shared_Dirty+ Private_Clean+ Private_Dirty,每smaps条目的过程中,我得到的报告过程中的RSS ps,这是很酷。例如 ps -p $$ -o pid,rss 能不能给我的RSS的(约)相同的值的每一个总和Shared_Clean,Shared_Dirty,Private_Clean,Private_Dirty在/ proc / $$ / smaps项。 但是整个过程的PSS呢?因此,从上面的示例中,如何获得$$的PSS?我可以为每个smap映射添加PSS条目,然后以$$的价格到达PSS吗? 那么在整个过程中USS呢?再次以上述示例为例,我猜想我可以通过对$$ ..的每个smaps条目仅汇总Private_ *条目来以$$到达USS。 注意: PSS =比例设置大小。 USS =唯一的集合大小。

5
测量程序的RAM使用率
time 如果您想弄清楚给定命令需要多少CPU时间,这是一个很棒的命令。 我正在寻找类似的东西,可以测量程序和任何子级的最大RAM使用率。最好,它应该区分已使用和未使用的已分配内存。也许它甚至可以给出内存使用率的中位数(因此,长时间运行时您应该期望的内存使用率)。 所以我想做: rammeassure my_program my_args 并获得类似于以下内容的输出: Max memory allocated: 10233303 Bytes Max memory used: 7233303 Bytes Median memory allocation: 5233303 Bytes 我已经看过memusg https://gist.github.com/526585/590293d6527c91e48fcb08edb8de9fd6c88a6d82,但我认为这有点黑。

3
如何创建内存使用受限的用户?
所以我有4 GB RAM + 4GB交换空间。我想创建一个具有有限的ram和swap的用户:3 GB RAM和1 GB swap。这样的事情可能吗?是否可以在不创建单独用户的情况下启动具有有限RAM的应用程序并交换可用的应用程序(并且不安装任何特殊应用程序-仅具有默认的Debian / CentOS服务器配置,而不使用sudo)? 更新: 因此,我打开了terminall并在其中输入ulimit命令:ulimit -v 1000000就像976,6Mb限制一样。接下来,我打电话来ulimit -a,看到限制是“打开”的。然后,我启动了一个bash脚本,该脚本进行了编译,并在nohup一个很长的 脚本中启动了我的应用程序nohup ./cloud-updater-linux.sh >& /dev/null &……但是一段时间后,我看到了: (如果没有限制,没关系-它下载了一些大的lib,并开始对其进行编译。) 但是我以为我对shell和使用shell启动的所有进程都施加了限制ulimit -v 1000000?我怎么了?如何使终端及其启动的所有子进程受到ram使用的限制?

4
如何确定虚拟地址空间中的页面大小?
Linux使用虚拟内存系统,其中所有地址都是虚拟地址,而不是物理地址。这些虚拟地址由处理器转换为物理地址。 为了简化翻译,将虚拟和物理内存分为页面。每个页面都有一个唯一的编号;页面框架号。 某些页面大小可以是2 KB,4 KB等。但是如何确定此页面大小数字?它受体系结构大小的影响吗?例如,一个32位总线将具有4 GB的地址空间。

2
使用/ var / log / messages调试内存不足
我的消息日志中将引发以下报告: kernel: Out of memory: Kill process 9163 (mysqld) score 511 or sacrifice child kernel: Killed process 9163, UID 27, (mysqld) total-vm:2457368kB, anon-rss:816780kB, file-rss:4kB 不管这个问题是针对还是无关紧要httpd,但我很好奇如何继续调试该问题。mysqldpostfix 我如何获得有关为什么PID 9163被杀死的更多信息,并且我不确定Linux是否将终止的PID的历史记录保存在某处。 如果您的消息日志文件中出现这种情况,您将如何逐步解决此问题? # free -m total used free shared buffers cached Mem: 1655 934 721 0 10 52 -/+ buffers/cache: 871 784 Swap: 109 …

4
grep:内存耗尽
我正在做一个非常简单的搜索: grep -R Milledgeville ~/Documents 一段时间后出现此错误: grep: memory exhausted 如何避免这种情况? 我的系统上有10GB的RAM,运行的应用程序很少,所以我真的很惊讶一个简单的grep内存不足。~/Documents大约100GB,其中包含各种文件。 grep -RI 可能没有这个问题,但是我也想在二进制文件中搜索。

6
如何仅将交换空间用于紧急情况?
我有一台Debian(Buster)笔记本电脑,具有8 GB RAM和16GB交换空间。我正在执行一项很长时间的任务。这意味着我的笔记本电脑在过去的六天内一直处于开机状态。 在执行此操作时,我需要定期将笔记本电脑用作笔记本电脑。这应该不成问题;长期运行的任务是受I / O约束,可以处理USB硬盘上的内容,并且不会占用太多RAM(<200 MB)或CPU(<4%)。 问题是几个小时后我回到笔记本电脑时,它会非常缓慢,可能需要30分钟才能恢复正常。这非常糟糕,崩溃监视器将其各自的应用程序标记为已冻结(尤其是浏览器窗口),并且开始错误地崩溃。 在系统监视器上查看,已使用的2.5 GB内存中约有一半转移到了swap中。我已通过删除交换空间(swapoff /dev/sda8)确认了这是问题所在。如果我没有交换空间就可以使用它,即使在24小时之后,它也几乎可以立即恢复运行。通过交换,实际上仅剩下前六个小时的前五分钟就变成了一块砖。我已经确认即使我不在时内存使用量也不会超过3 GB。 我曾尝试降低swappiness(另见:维基百科)对值10和0,但问题仍然存在。似乎经过一天的不活动之后,内核认为不再需要整个GUI,并将其从RAM擦除(将其交换到磁盘)。长期运行的任务是读取庞大的文件树并读取每个文件。因此可能是内核被混淆了以为缓存会有所帮助。但是,仅扫描一次具有约10亿个文件名的2 TB USB HD,额外的GB RAM就不会对性能产生很大的帮助。这是一台便宜的笔记本电脑,硬盘驱动器呆滞。它根本无法足够快地将数据加载回RAM。 如何告诉Linux仅在紧急情况下使用交换空间?我不想没有交换就跑。如果发生意外情况,并且操作系统突然需要额外的GB,那么我不希望任务被杀死,而宁愿开始使用swap。但是目前,如果我启用交换功能,则仅在需要时才可以使用笔记本电脑。 “紧急情况”的确切定义可能是一个有争议的问题。但是要澄清一下我的意思:紧急情况是系统处于交换或终止进程的状态而没有其他选择的地方。 什么是紧急情况?- 您真的要问吗?...希望您永远不会在燃烧的建筑物中发现自己! 对于这个问题,我无法定义所有可能构成紧急情况的东西。但是例如,紧急情况可能是当内核被迫压入内存以至于它开始使用OOM Killer终止进程时。当内核认为使用交换可以提高性能时,就不会出现紧急情况。 最终编辑: 我已经接受了一个答案,该答案恰好满足了我在操作系统级别上的要求。未来的读者还应该注意提供应用程序级解决方案的答案。
41 linux  memory  swap 

1
加载共享库和RAM使用率
我想知道Linux管理共享库的方式。(实际上,我说的是Maemo Fremantle,这是2009年发行的基于Debian的发行版,运行于256MB RAM上)。 假设我们有两个链接到libQtCore.so.4并使用其符号(使用其类和函数)的可执行文件。为了简单起见,我们将它们称为a和b。我们假设两个可执行文件都链接到相同的库。 首先我们启动a。必须加载该库。它是整体加载还是仅在所需部分加载到内存(因为我们不使用每个类,因此仅加载有关所用类的代码)? 然后我们启动b。我们假设它a仍在运行。b也链接到libQtCore.so.4并使用一些使用的类a,但也使用了一些未被使用的类a。库是否会被双重加载(分别用于a和分别加载b)?或者他们将使用RAM中已经存在的相同对象。如果不b使用任何新符号并且a已经在运行,则共享库使用的RAM是否会增加?(或者差异不大)

3
vm.swappiness参数真正控制什么?
根据内核文档: This control is used to define how aggressive the kernel will swap memory pages. Higher values will increase aggressiveness, lower values decrease the amount of swap. 但这有点含糊。我试图弄清楚参数最终控制什么。我知道它会调整内核尝试换页的积极程度,但是它会影响内核代码中的哪些决策过程? 它会调整内核换出之前必须访问页面多长时间吗?如果是这样,默认值60代表什么?增减1会改变多少(一个公式会很好)? 还是根据访问频率交换页面? 或者是其他东西?
36 linux  kernel  memory  swap 

4
内存不足时系统挂起
我有一台eeePC 900a:它有一个8GB的闪存作为磁盘,只有1GB的RAM。安装在其上的Linux发行版是ArchLinux。 当系统内存不足时,它将变得极无响应:执行切换到TTY1甚至移动鼠标指针之类的操作需要花费几秒钟/分钟。有时,看起来好像系统冻结了:三年前,我不理会它,到目前为止什么都没有改变。 我宁愿避免在此eeePC上创建交换分区/文件,因为磁盘已经很小,而且因为交换空间上的大量写入操作会大大缩短闪存卡的寿命。此外,我认为交换文件/分区只会解决问题,而不是绝对解决问题。 内核内存不足时,不是应该杀死一些随机应用程序吗?为什么这样做会失败(或花费很多时间)? 几个月/几年前,我已经尝试进一步研究,但是找不到任何实际可行的方法...
34 linux  memory  freeze 

5
如何检查哪个进程使用最多的内存
当我检free入Prod服务器之一时,它显示正在使用70%的内存: total used free shared buffers cached Mem: 164923172 141171860 23751312 0 4555616 20648048 -/+ buffers/cache: 115968196 48954976 Swap: 8388600 0 8388600 但是我没有找到正在使用内存的进程,我尝试了该top命令,它显示的进程仅使用内存的1.1和5.4% 如何找到正在使用哪个进程的内存? 以下是最重要的命令结果: 15085 couchbas 25 0 2784m 2.4g 40m S 183.7 1.5 299597:00 beam.smp 28248 tibco 18 0 124m 100m 3440 S 20.9 0.1 2721:45 tibemsd 15334 …
33 process  memory  top 

5
如何使用Linux命令获得已使用的内存(已使用RAM)?
我正在尝试使用Linux命令按百分比检索已用内存(RAM)。我的面板显示“已用内存”,需要在特定网页上显示。 从论坛中,我发现可以从以下位置找到正确的内存: free -m 结果: -/+ buffers/cache: 492 1555 -/ +缓冲区/高速缓存:包含正确的内存使用情况。我不知道如何解析此信息,或者是否有任何其他命令来获取百分比使用的内存。
30 centos  memory  cpanel 

1
Linux可支持的最大RAM是多少?
Linux可支持的最大RAM是多少?假设硬件是/支持64位。在所有Linux发行版中。 它最多可以达到16 EB,还是像我认为是192 GB的Windows那样受到限制?
29 linux  memory 

5
使Linux读交换回内存
当我运行一个使用大部分16GB物理内存的应用程序时,Linux内核会从内存中换出大多数页面。应用程序完成后,每个操作(键入命令,切换工作区,打开新网页等)都需要很长时间才能完成,因为首先需要从交换中读回相关页面。 有没有办法告诉Linux内核将页面从交换复制回物理内存,而无需手动触摸(和等待)每个应用程序?我运行许多应用程序,因此等待总是很痛苦。 我经常使用它swapoff -a && swapon -a来使系统再次响应,但这会清除页面中的交换内容,因此下次运行脚本时需要重新编写它们。 是否有内核接口(也许使用sysfs)来指示内核从swap读取所有页面? 编辑:我确实在寻找一种使所有交换swapcached的方法。(谢谢德罗伯特!) [ PSserverfault.com/questions/153946/…和serverfault.com/questions/100448/…是相关主题,但没有解决如何使Linux内核将页面从交换复制回内存而不清除交换的问题。
28 linux  kernel  memory  swap  sysfs 

2
如何根据MemTest86 +错误指示将正确的坏RAM扇区列入黑名单?
MemTest86 +(Ubuntu 13.04附带的版本)说 Failing address: 002f796c48 - 759.5 MB 我应该在memmap内核参数中指定什么来绕过该区域? 我尝试运行memtester 770MB,它说一切都很好,因此看上去MemTest的指示从一开始就没有出现第759.5 MB的错误。 如何解释此MemTest指示进行配置memmap? 我现在没有钱买新的RAM,并且错误似乎是单一的,所以我希望我可以重写它。
28 linux  kernel  memory  ram 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.