Questions tagged «swap»

交换空间是硬盘上的一个区域,当计算机内存已满时,它会溢出。非活动应用程序使用的内存部分写入磁盘,以为其他应用程序和活动文件的磁盘缓存腾出空间。

1
如何为Linux设置每个进程的可交换性?
/proc/sys/vm/swappiness很好,但我希望每个过程都有一个类似的旋钮/proc/$PID/oom_adj。这样一来,与其他进程相比,我可以使某些进程调换其任何页面的可能性降低。与不同memlock(),这不会阻止程序被换出。就像一样nice,默认情况下,用户不能降低其程序的可能性,而只会使其更有可能被交换。我想我必须叫这个/proc/$PID/swappiness_adj。
29 linux  process  swap 

2
Docker —警告:不支持交换限制
我在Ubuntu 16.04上运行Docker(1.9.1)。当我运行docker info输出的最后一行时说WARNING: No swap limit support。 INFO[0781] GET /v1.21/info Containers: 0 Images: 0 Server Version: 1.9.1 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 0 Dirperm1 Supported: true Execution Driver: native-0.2 Logging Driver: json-file Kernel Version: 4.4.0-62-generic Operating System: Ubuntu 16.04.1 LTS (containerized) CPUs: 2 Total Memory: …
29 swap  docker 

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 

3
多个交换文件的目的是什么
在安装大多数(如果不是全部)发行版的Linux期间,默认情况下会将硬盘驱动器分区为包括交换分区。 可以通过以下方式更改此行为 swapon -p priority 根据手册页,优先级是: PRIORITY Each swap area has a priority, either high or low. The default priority is low. Within the low-priority areas, newer areas are even lower priority than older areas. All priorities set with swapflags are high-priority, higher than default. They may have any non-negative …
28 swap 

2
这是Linux分页应该如何表现吗?
当我的Linux系统接近分页时(例如,在我的情况下,16GB的内存几乎已满,16GB的交换空间完全为空),如果新进程X尝试分配一些内存,系统将完全锁定。也就是说,直到不成比例的页面(已浪费X的内存分配请求的总大小和速率)为止。请注意,不仅gui变得完全没有响应,甚至sshd之类的基本服务也被完全阻止。 这是我用来以更“科学”的方式触发此行为的两段代码(当然是粗糙的)。第一个从命令行获取两个数字x,y,然后继续分配和初始化y字节的多个块,直到分配了x个以上的总字节。然后无限期地睡觉。这将使系统处于分页的边缘。 #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> int main(int argc, char** argv) { long int max = -1; int mb = 0; long int size = 0; long int total = 0; char* buffer; if(argc > 1) { max = atol(argv[1]); size = atol(argv[2]); } printf("Max: %lu …

2
是否可以在强制交换时触发OOM杀手?
是否可以让系统抢先换出不活动的页面(vm.swappiness),但在系统内存不足(而不是内存不足)并被迫换盘时调用oom-killer? 最终目标是防止由于主要页面错误而使系统开始损坏磁盘时,系统不再处于停顿状态,但仍然让不活动的页面被换出。 另一个愿望是配置在强制关闭oom-killer之前强制系统使用多少交换内存。这样,只要距离不远,系统就可以进行少量交换。或者,我可以设置一个阈值以在使用所有RAM之前触发oom-killer,以便始终为文件系统缓存留出空间(从而避免更多的磁盘颠簸)。 似乎并不难做到。好像您可以告诉oom-killer在系统使用/免费的X ram时触发。但这就是为什么我要问。我不知道。 为了澄清起见,我不想关闭交换或调整vm.swappiness参数

1
如何测试交换分区
我正在尝试诊断无头服务器上的一些随机段错误,似乎奇怪的是,它们似乎仅在内存压力下发生,并且我的交换大小不会超过0。 如何强制我的机器交换以确保其正常工作? orca ~ # free total used free shared buffers cached Mem: 1551140 1472392 78748 0 333920 1046368 -/+ buffers/cache: 92104 1459036 Swap: 1060280 0 1060280 orca ~ # swapon -s Filename Type Size Used Priority /dev/sdb2 partition 1060280 0 -1
23 linux  swap 

1
在LVM中交换分区?
我想知道将交换分区放入逻辑卷组是否有任何缺点(例如性能),还是将其作为单独的主/逻辑分区“一样”? 我喜欢这样的事实,如果有必要可以很容易地调整它的大小,但是不确定可能存在的缺点。 应用案例:CentOS 7 Web服务器。

6
Linux可以“用完RAM”吗?
我在网上看到很多帖子,似乎是在抱怨托管的VPS意外终止进程,因为它们使用了太多的RAM。 这怎么可能?我以为所有现代OS都通过对物理RAM上的内容使用磁盘交换来提供“无限RAM”。它是否正确? 如果进程“由于RAM不足而被杀死”会发生什么情况?


1
什么设置了tmpfs的大小?充满后会发生什么?
什么设置尺寸tmpfs?(在我的计算机上,它位于/dev/shm)我可以在中看到其条目/etc/fstab,但没有其大小的表示法。使用进行检查时df -h,它似乎是系统中安装的物理内存的一半。这是默认行为吗? 另外,如果装满了怎么办?它会动态扩展,迫使其他正在运行的程序进入swap吗?tmpfs本身是否会进入swap分区? 最后,什么优先考虑到内存tmpfs或应用程序?即,如果我有tmpfs足够的内存(例如40%的物理内存),并且我的程序需要70%的物理内存,那么哪个优先?
20 linux  swap  tmpfs 

2
Linux:使用的总交换=进程使用的交换+?
因此,我试图对交换使用率高的系统中的交换使用来自何处进行调查: # free total used free shared buffers cached Mem: 515324 508800 6524 0 4852 27576 -/+ buffers/cache: 476372 38952 Swap: 983032 503328 479704 加总每个进程使用的交换: # for proc in /proc/*; do cat $proc/smaps 2>/dev/null | awk '/Swap/{swap+=$2}END{print swap "\t'`readlink $proc/exe`'"}'; done | sort -n | awk '{total+=$1}/[0-9]/;END{print total "\tTotal"}' 0 …
17 linux  memory  swap 

3
如何在Linux中设置加密的交换文件?
2017警告!可接受的答案似乎有效,但是在最近的内核中,我发现系统在开始交换后将立即挂起。如果尝试使用加密的交换文件,请确保它实际上正确交换。我花了很长时间才弄清楚为什么我的系统无缘无故地锁定。我回过头来使用加密的交换分区,它可以正常工作。 如何在Linux中设置加密的交换文件(而非分区)?可能吗?我发现的所有指南都讨论了加密的交换分区,但是我没有交换分区,因此我不必重新分区磁盘。 我不需要磁盘暂挂支持,因此我想在每次启动时使用随机密钥。 我已经在使用TrueCrypt文件托管卷来存储我的数据,但是我不想将交换放在该卷中。如果有更好的解决方案,我不打算将TrueCrypt用于交换文件。 如果重要的话,我正在使用带有默认内核的Arch Linux。

2
如何查看交换中的内容?
在我的系统上,我使用了一些交换: undefine@uml:~$ free total used free shared buffers cached Mem: 16109684 15848264 261420 633496 48668 6096984 -/+ buffers/cache: 9702612 6407072 Swap: 15622140 604 15621536 如何查看交换中的内容? 我尝试通过进程进行检查,但是系统VmSwap上的每个pid均为0: undefine@uml:~$ awk '/VmSwap/ {print $2}' /proc/*/status |uniq 0 交换中还有什么?我考虑过tmpfs-但是我重新读取了tmpfs-es上的所有文件-并且它不刷新交换大小。
15 linux  swap 

2
如何增加Mac OS X上的最大交换空间?
在Mac OS X Yosemite 10.10.5上,当我尝试运行需要分配和使用128 GB内存的计算(这是用C语言编写的命令行程序)时,内核会以极大的偏见杀死我的进程。此控制台日志条目是一个实例的示例: 15/9/25 7:08:40.000 PM内核[0]:低交换:杀死pid 6202(huffgrp) 分配并使用64 GB内存时,该计算可以在合理的时间内正常运行。我的Mac硬盘上有32 GB的RAM和beaucoup空间。我还在另一台具有8 GB RAM的Mac上进行了尝试,在该Mac上64 GB计算也可以正常运行,当然需要更长的时间,但是128 GB计算却以相同的方式被内核杀死。 顺便说一句,malloc()无论我要多少空间,都永远不会返回错误。一旦进程实际使用了过多的内存,内核将终止进程,从而导致大量交换到硬盘驱动器。 因此,似乎存在一个秘密的交换空间限制,介于64 GB和128 GB之间。 我的问题是:如何重新配置​​内核以允许更多交换空间?我找到了一个有前途的文件,/System/Library/LaunchDaemons/com.apple.dynamic_pager.plist但看不到其中的秘密号码。的手册页dynamic_pager说,它所做的只是设置交换文件的名称和位置。该手册页中有较旧的版本,其中记录了-S用于设置所创建交换文件大小的选项。我尝试过,请求160 GB交换文件,但是没有效果。每个交换文件仍为1 GB,该进程仍被内核杀死。

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.