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
    • 最新
    • 标签
主页 / server / 问题 / 898746
Accepted
shalom
shalom
Asked: 2018-02-25 14:57:07 +0800 CST2018-02-25 14:57:07 +0800 CST 2018-02-25 14:57:07 +0800 CST

如何知道我的服务器是否应该使用大页面(内存页面大小)

  • 772

我们在集群中有几台服务器,我们想知道在什么情况下我们需要配置大页面?

我也有几个问题

  1. 剂量“内存页面大小”等于巨大的页面?

在我的 linux 服务器中,我输入了以下命令来验证默认内存页面大小

grep Hugepagesize /proc/meminfo

Hugepagesize: 2048 kB

getconf PAGESIZE

4096
  1. 但正如大家在这里看到的那样,我们得到了不同的结果,为什么?

  2. 使用大页面有什么风险?

  3. 剂量禁用透明大页面 - 意味着禁用大页面选项?

linux
  • 2 2 个回答
  • 4419 Views

2 个回答

  • Voted
  1. Best Answer
    Simon Richter
    2018-02-25T18:00:53+08:002018-02-25T18:00:53+08:00

    当应用程序需要对它们进行随机访问的大型映射时,大页面很有趣,因为对于翻译后备缓冲区 (TLB) 而言,这是最坏的情况。您可以权衡 TLB 条目的映射粒度。

    页面,包括大页面,只能映射到相同大小的物理内存块,并与该大小对齐。所以2MB的hugepage需要映射到物理RAM中2MB的边界,1GB的hugepage需要映射到1GB的边界,因为低位寻址的是page里面的数据,这里不能加offset。

    这意味着大页面通常在系统启动时保留,此时物理内存还没有碎片化。大页面感知的应用程序可以hugetlbfs用来分配它们。

    您必须使用内核参数来决定大页面的大小应该是 2MB 还是 1GB,您不能混合使用这些。正常的 4kB 页面始终可用。

    最常见的用例是虚拟机(qemu/kvm 可以使用大页面),这允许将 VM 的整个内存映射保留在少量 TLB 条目中,因此永远不会被驱逐,因此 VM 内部的内存访问需要一个页面仅在来宾上下文中查找表。

    一些数据库系统也支持大页面,但这通常仅在您使用大型数据集和索引时才有用。

    问题:

    1. 有普通(4kB)页面和巨大(2MB 或 1GB)页面。查询页面大小时,获取普通页面的大小,查询大页面大小时,获取大页面的设置。普通页面和大页面都可以并行使用,但不能混合使用不同的大页面大小。

    2. 你会得到不同的结果,因为这是两个不同的东西。普通页面的大小在硬件中是固定的,因此不是设置。

    3. 大页面需要尽早分配,虽然内存在技术上是“空闲的”,但它不能用于除了大页面感知应用程序之外的任何应用程序,因此除了这些应用程序之外的所有应用程序都将拥有更少的可用内存。这通常不是问题,因为您会在专用于内存密集型应用程序(如 VM 或数据库)的机器上使用大页面。

    4. 透明大页尝试使内存可用作缓冲区和缓存(与#3相反),并尝试将大页提供给映射大内存块的应用程序,因此不知道大页的应用程序仍然可以从中获利——基本上是一个应用程序如果可能,请求 2MB/1GB 内存块将获得一个大页面。这是否有助于或损害性能取决于您的应用程序。如果您有一个支持大页面的应用程序并且想要手动分配内存,则需要禁用 THP,而具有不理解大页面的数据库应用程序的系统可能会受益。

    • 6
  2. John Mahowald
    2018-02-26T19:05:24+08:002018-02-26T19:05:24+08:00

    大页面的明显用例是当 PageTables(在 /proc/meminfo 中可见)变为数十 GB 时。这意味着仅跟踪内存会产生大量内存和 CPU 开销。它发生在巨大的内存块、大量进程或两者兼而有之的情况下。通常在数据库应用程序中。

    大页面显着减少了这种开销,因为单个页表条目现在可以处理更多的内存,比如 2,048 KB 而不是 4 KB。(在其他平台上有不同的大小,例如 AIX on POWER 支持 16 MB 大页面。)

    Linux 上的大页面可能不会用于文件缓存,并且对于非共享内存的 malloc() 来说,对于几 MB 来说是烦人且效率低下的。因此管理员必须分配只能用于某些目的的大页面池。这是使用大页面的弊端。

    透明大页面 (THP) 试图通过自动将连续内存“碎片整理”成大页面来减少管理的烦人。这个想法是这使得预先分配的大页面成为可选的。好处是高度特定于工作负载的,它可能会花费过多的 CPU 而不值得。禁用 THP 意味着您仍然可以手动使用分配大页面。有时关闭 THP 并将数据库的共享内存段放在大页面中是值得的。

    关于 Linux 大页面的最后一个抱怨:​​我觉得管理它很烦人。

    • 共享内存使用一个接口,但对于其他接口,您使用hugetlbfs 库和文件系统。
    • 您可以通过分配任何大页面而不配置应用程序来使用它来“浪费”内存。
    • 该页数必须缩放到每个主机大小,因为它是页数而不是内存百分比。
    • 通常,分配大页面的能力仅限于一组,切换数据库用户可能会导致意外的内存浪费。
    • 3

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve