AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1439613
Accepted
doosolLee
doosolLee
Asked: 2019-05-22 17:52:40 +0800 CST2019-05-22 17:52:40 +0800 CST 2019-05-22 17:52:40 +0800 CST

我可以让虚拟机在过度使用时使用交换空间(交换文件)作为内存吗?

  • 772

我正在用 VM 和 KVM 做一些实验。我试图认识到过度使用和交换空间的事实。首先,让我展示一下我为这个实验所做的系统设置和关联配置。

我的主机系统有:

  1. 内存(动态随机存取存储器):16GB
  2. 交换空间(交换分区):32GB
  3. 固态硬盘:512G​​B

我的虚拟机有:

  1. 内存:4GB
  2. 交换空间(交换分区):8GB
  3. 虚拟磁盘容量:20GB

如果我通过 cgroup 接口将 VM 的内存资源从 4GB 限制到 1GB。在这种情况下会发生过度承诺。然后我尝试通过wap-space解决这个问题,并通过vmstat检查它是否有效。似乎它不使用交换空间作为内存。

为什么我的 VM 在过度使用情况下不使用交换空间?

memory qemu
  • 1 1 个回答
  • 1632 Views

1 个回答

  • Voted
  1. Best Answer
    Ed Grimm
    2019-05-22T18:43:38+08:002019-05-22T18:43:38+08:00

    我认为您缺少的部分是“过度承诺”的含义。

    过度使用并不是用来实际拥有比您限制系统拥有的资源更多的资源的技巧。这是一种表现得好像有更多资源的技巧。

    基本概念是,大多数程序会分配比实际使用更多的内存。例如,他们可能会分配 32K 的 RAM 来读取一个只有 57 字节的文件。他们将其读入,并为此实际使用了一页内存。但是仍然分配了 32K。请注意,这个例子是 90 年代的,今天,分配更大,文件更大,但关键是额外的内存仍然是一个承诺,永远不会被收集。

    如果我没记错的话,这甚至会发生在一些不知情的程序中,因为它们会加载执行此操作的库,甚至加载这些库也会执行此操作 - 链接器为库分配足够的内存,但仅为例程实际调用的是实际加载的。那可能是共享内存,因此影响最小化,但它仍然存在。

    发生的过度承诺的数量在很大程度上取决于调用的程序及其使用方式。如果一个程序运行得非常彻底,它可能会使用更多的一些库。调用 calloc 而不是 malloc 的程序不会显示出过多的提交,因为 calloc 写入分配空间的每个字节,要求操作系统完成请求的提交,即使将使用的内存的实际部分会少很多。有些程序会更加小心,只分配它们需要的确切内存量,而其他程序则依赖操作系统支持过度使用,以允许它们在数据结构安排上务实。

    如果您限制使用 1GB 的服务器上的应用程序实际上设法访问了完整 GB 的页面,它将使用您配置它可以使用的 8GB 交换空间。但它不会将其用于过度承诺。在分配超过它实际拥有的 9GB VM 之前,它在技术上不会使用过度使用。

    话虽这么说,这就是 Linux,我对尝试将 Linux 推向最大内存分配而不启用过度使用的回忆是,它往往会提前失败——它为各种事情保留了一些储备,比如少量的文件缓存和其他东西. 那是十多年前的经历,但我没有特别看到改变的理由;拥有能够执行文件 I/O 的内存很重要。

    • 0

相关问题

  • CPU/PC 冻结(温度?)

  • 可以读取硬盘驱动器并专门写入 RAM 的系统?

  • 购买合适的笔记本电脑 RAM [关闭]

  • RAM 安装顺序。8GB 和 16GB。哪个应该在插槽 0 中?

  • CPU、内存还是主板?(PEBCAK!)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve