Questions tagged «memory»

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

3
是否可以对进程的内存消耗施加某种软限制?
我认为这并不是一个不常见的问题:一个进程分配大量的内存(这是由于内存泄漏错误所致,因为您尝试处理不可行的大输入文件,或其他原因)。RAM已满,并且在某些时候Linux必须切换到交换。好吧,有时候这只是最后的选择:如果我要进行昂贵的计算,如果快要用完RAM了,我不想丢失数据。 但是(以我的经验)更常见的是,内存消耗不受无赖(可能是错误的)过程的限制。就是说,我不仅要交换一些不那么急需的数据,而且操作系统不得不紧急交换数据负载。不幸的是,这不仅严重破坏了令人讨厌的过程,而且可能使整个系统陷入停顿(在装有SSD的计算机上,情况已经不再那么糟糕了,但是OTOH让我担心是否要写入数千兆字节的垃圾数据)。长期损害闪存)。直到我发现问题并手动终止进程(实际上甚至要花几分钟才能让我自己登录到虚拟终端!),我一半的运行会话仍处于交换状态,我需要等待相当长的一段时间,直到系统运行平稳再次。 解决这个问题的方法很简单:强制执行硬内存限制。但是在整个系统范围内进行操作有时会杀死我本来仍然需要的进程,如果ulimit在启动有问题的进程之前必须手动进行操作……那么,我常常会忘记直到为时已晚。 我可能更喜欢的解决方案: 如果有任何进程超出了一定的内存使用量,则会人为地限制它,以便系统的其余部分保持响应。 如果有任何进程超出了一定的内存使用量,那么它将被SIGSTOPping,因此我有时间弄清楚下一步该怎么做。 如果进程接近RAM限制,那么在进行大容量交换之前,我会收到警告。 有什么办法可以得到这样的行为,或者类似的?
10 linux  memory  swap 

1
分配给平板的不可回收内存是否被视为已使用或可用的缓存?
在评估/ proc / meminfo之后,我看到以下信息: $cat /proc/meminfo MemTotal: 197852592 kB MemFree: 64755992 kB MemAvailable: 65655112 kB Buffers: 4388 kB Cached: 759952 kB SwapCached: 0 kB Active: 649472 kB Inactive: 308340 kB Active(anon): 193840 kB Inactive(anon): 25316 kB Active(file): 455632 kB Inactive(file): 283024 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 4095932 …

3
经过研究,仍然对监视RAM使用情况感到困惑
我仔细阅读了这篇文章,其中介绍了各种检查RAM使用率的方法。但是,我无法调和不同的方法,也不知道哪种方法正确。 首次登录时,会看到如下屏幕: System information as of Sun Apr 28 21:46:58 UTC 2013 System load: 0.0 Processes: 76 Usage of /: 15.6% of 7.87GB Users logged in: 1 Memory usage: 41% IP address for eth0: Swap usage: 0% 这向我表明我正在使用我的RAM的41%,这似乎很高,因为服务器工作不多。还是那个数字是指RAM以外的东西? 接下来,我尝试该free -m方法: ubuntu@ip-:~$ free -m total used free shared buffers cached Mem: …
10 linux  memory 

1
ELF可执行文件的哪些部分被加载到内存中,在哪里?
我已经知道的: ELF可执行文件包含许多节,显然.text和.data节已加载到内存中,因为这些是程序的主要部分。但是要使程序正常工作,它需要更多信息,尤其是在动态链接时。 我感兴趣的是.plt,.got,.dynamic,.dynsym,.dynstr等部分。ELF中负责将功能链接到地址的部分。 到目前为止,据我所知,诸如.symtab和.strtab之类的内容不会加载(或不保留)在内存中。但是链接器是否使用.dynsym和.dynstr?他们留在记忆中吗?我可以从程序代码访问它们吗? 可执行文件的任何部分都驻留在内核内存中吗? 我对此的兴趣主要是法医,但是有关此主题的任何信息都将有所帮助。我所阅读的有关这些表和动态链接的资源比较高级,它们仅说明工作原理,而与内存中的内容无关。 让我知道我的问题是否有任何不清楚之处。


2
vm.overcommit_ratio的剩余内存在哪里?
如果我通过设置禁用内存过量使用vm.overcommit_memory到2,默认情况下,系统允许分配内存高达交换的物理内存+ 50%的尺寸,如解释在这里。 我可以通过修改vm.overcommit_ratio参数来更改比率。假设我将其设置为80%,因此可以使用80%的物理内存。 我的问题是: 该系统将如何处理剩余的20%? 为什么首先需要此参数? 为什么我不总是将其设置为100%?


2
在低RAM环境中优化ZFS的可行性吗?
我目前正在设置文件服务器,并且已经到了实际设置数据驱动器的地步。系统具有4个驱动器(一个OS磁盘,3个数据磁盘)。操作系统磁盘格式化为ext4,不会被添加到ZFS池中(如果我选择运行ZFS)。我主要关心的是数据完整性和最小数据丢失风险(BIOS中禁用了驱动器缓存)。为此,ZFS似乎是最理想的选择,因为它具有适用于Linux的稳定版本(对吗?),并支持数据复制,池化和raidz,而硬盘驱动器的大小不必相同。 但是,这是我的问题。该服务器只有2GB的RAM,并且不能在不久的将来升级,实际上,在我安装所有其他服务之后,ZFS实际上只能访问1.5。一次最多可使用约10个客户端(平均约4个)。这太低了以至于不能算安全吗? 据我了解,ZFS可能会在内存不足的情况下崩溃,并占用大量内存。我听到了一些矛盾的意见,即交换是否会有助于缓解此问题(我有20 GB的交换专用驱动器)。有没有人遇到过使用RAM少的ZFS造成数据丢失的情况,您为防止这种情况进行了哪些优化? 牢记上述内容,尽管减小了ack大小并进行了一些缩小,但仍可以运行ZFS,还是这样做风险太大? 系统规格:2GB RAM 20GB交换驱动器OS,Debian 7,最小安装,带FTP,以及XBMC,DNLA(以了解RAM要求)。用于将存储服务器和音乐媒体流传输到其他设备。
10 linux  memory  zfs 

1
跟踪Linux中“丢失”的内存使用情况
在Arch 3.6.7 x86_64内核上,我试图说明系统的内存使用情况,我看得越多,似乎就越有漏洞(在使用内存的核算中,不存在漏洞)。的用法)。 这是一个新启动的系统。除了systemd和sshd之外,没有太多的运行可以保持简单 $ ps aux | sort -n -k6 ... root 316 0.0 0.0 7884 812 tty1 Ss+ 14:37 0:00 /sbin/agetty --noclear tty1 38400 matt 682 0.0 0.0 24528 820 pts/0 S+ 15:09 0:00 sort -n -k6 dbus 309 0.0 0.0 17280 1284 ? Ss 14:37 0:00 /usr/bin/dbus-daemon …

2
如何限制应用程序内存使用?
我花了2个小时阅读有关此问题的问题,但仍然存在一些误解。 我有这个过程: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1452 0.4 1.8 1397012 19308 ? Sl 04:23 3:48 ./transaction_server 这表明它使用了整个系统内存19.3Mb附近1.8%的系统驻留内存(我没有交换文件)1GB。虚拟大小为1.39GB?!?。我读过那ulimit -m行不通。人们使用ulimit -v例如为该过程设置虚拟内存。这是VSZ列出的虚拟内存ps吗?如果要限制此过程100MB最多使用系统内存,应该设置什么值。我已经阅读了文档setrlimit,这似乎是合法的: RLIMIT_AS This is the maximum size of a process' total available memory, in bytes. If this limit is exceeded, the malloc() and mmap() …
10 linux  memory 

1
了解MMAP
我在这里浏览有关MMAP的文档,并尝试使用此文档来实现 我对它的实施有一些疑问。 MMAP是提供文件的映射并返回物理内存中该位置的指针还是返回映射表的地址?是否也为该文件分配和锁定空间? 将文件存储在内存中的那个位置后,它会一直保持在那里直到munmap被调用吗? 该文件是否甚至移至内存中,还是只是用作重定向的映射表,而该文件实际上位于虚拟内存-(disk)中? 假设将其移到内存中,如果其他进程具有地址,其他进程可以访问该空间以读取数据吗?

2
Linux在哪里设置SHMMAX的默认值?
我只是想知道在哪里设置这些值以及它们的默认值是什么?我的目前是18446744073692774399。我没有将其设置在任何可以看到的地方。 $ cat /proc/sys/kernel/shmmax 18446744073692774399 $ sysctl kernel.shmmax kernel.shmmax = 18446744073692774399

2
如何转储整个系统内存?
启动VirtualBox后,计算机变得缓慢,然后由于OOM而完全挂起。通常,OOM应该开始杀死进程以释放一些空间,但这没有发生(这是我第二次遇到这种情况)。 我在文本编辑器中进行了一些未保存的重要工作,因此我希望在使用SysRq+ 杀死当前控制台中的所有进程后,将其找到系统RAM中K。有问题的机器是一台笔记本电脑,带有8 GiB RAM,运行Linux x86_64 3.7.5,并以SSD作为目标磁盘。 我的第一次尝试是dd if=/dev/mem of=memory,但是在读取1MiB数据后失败了。接下来,我尝试了dd if=/dev/fmem of=memory bs=1M,但是在读取3010461696字节(恰好是2871 MiB)之后,此操作停止了。看完/proc/mtrr(如下所示)后,我决定尝试添加skip=4096。这最终放慢了速度,读取速度仅为3 MiB / sec,所以我中断了它(产生了5.8 GiB的文件)。(至少文件的最后100个MiB包含FF) reg01: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back reg02: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back reg03: base=0x100000000 ( 4096MB), size= 4096MB, count=1: write-back reg04: base=0x200000000 ( 8192MB), size= 1024MB, count=1: write-back …

5
交换使用率太高?
我有一个Debian Sid盒子,大约一个月前刚刚安装,目前没有任何桌面应用程序在运行。 我尝试运行的任何命令(通过ssh)都会使硬盘工作非常困难。该系统在几周前运行Ubuntu 8.04时完美运行。硬件应该没问题,智能工具没有问题,也没有内存检查等。 我怀疑问题与交换有关: $ free -h total used free shared buffers cached Mem: 998M 986M 12M 0B 464K 904M -/+ buffers/cache: 81M 917M Swap: 511M 511M 0B 测试的东西,我看到即使大多数物理内存都用于缓存,也无法在不重新启动的情况下禁用交换: # swapoff -a swapoff: /swapfile: swapoff failed: Cannot allocate memory 当运行此stackoverflow答案中提到的脚本时,最高的交换使用过程仅使用1.5兆位,而总计数为: "Overall swap used: 18376 kB" ...这远远没有达到停止或免费报告的半场演出。 我尝试将其更改swappiness为1半个月前,但是没有区别(相同的内存使用模式)。 知道是什么罪魁祸首吗? 编辑:这是/proc/meminfo内容(类似的情况,但是702meg的缓存而不是904,并且铬仍然打开): …
9 linux  debian  memory  swap 

3
身体摔成盒子?(内存和磁盘)
我有一个VPS。我也许可以加密我的分区,但是我还没有尝试过。我相信我的VPS公司可以重设我的root密码,尽管我看到的唯一SSH密钥是我自己的。我将所有数据加密为encfs。以防万一黑客获得某种访问权限,encfs只有在我的密码正确的情况下才可以安装驱动器(SSH密钥无法安装该驱动器,因为新密码是不正确的密码,因此重置root密码也不会安装) 我的问题是我的VPS主机可以闯入我的盒子吗?实际上,数据是加密的。我相信无需重置该框即可更改根目录吗?如果是这样,那么他们可以访问我已经挂载的文件系统?如果另一个没有权限的用户登录,该用户可以执行某些操作来访问ram并转储敏感数据吗?VPS主机可以轻松读取我的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.