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 / 问题 / 44446
Accepted
Sam
Sam
Asked: 2009-07-23 21:49:12 +0800 CST2009-07-23 21:49:12 +0800 CST 2009-07-23 21:49:12 +0800 CST

/3GB 切换到具有 6GB RAM 和 PAE 的 win2k3 服务器

  • 772

我们目前正在评估将 /3gb 开关添加到我们的一些服务器,以增加超出 2gb 限制的正在运行的进程之一(使用 IMAGEFILELARGEADDRESSAWARE 标志集编译)的可用内存。

但是,我想了解的是内存是如何在具有 > 4gb RAM 的服务器上的内核和用户进程之间分配的。根据文档,Windows 将在 4gb 系统上的内核和用户进程之间拆分 2gb / 2gb 内存。当您在服务器上启用 /3gb 时,内存被拆分为 1gb / 3gb。

我想知道的是,在启用了 6gb RAM 和 PAE 的服务器上,内存是如何分割的??内核是否仍被限制为 1gb?

干杯山姆

windows-server-2003 pae
  • 7 7 个回答
  • 6414 Views

7 个回答

  • Voted
  1. Best Answer
    Sam
    2009-08-13T22:52:31+08:002009-08-13T22:52:31+08:00

    我想我会为其他人发布后续信息,以尝试将信息整合到一个帖子中(基于我所学到的知识和已经发布的其他信息)。

    PAE:

    PAE 将允许 32 位 Windows 服务器使用或超过 4GB 的 RAM,最大值取决于您正在运行的 Windows 版本(维基百科在这里有一个很好的参考)

    需要注意的一点是,如果您打开了数据执行保护 (DEP) 或 NoExecution (NX),那么这将有效地启用 PAE,而无需在 boot.ini 中显式启用它。

    归根结底,PAE 对单个 32 位进程可以访问的内存量没有影响。它只影响窗口可以“看到”和使用的内存总量(因此您可以有 2 个进程,每个进程使用 2GB,Windows 在 6GB 系统上使用 2GB)

    3GB:

    首先,当我谈到单个 32 位进程可用的内存时,我指的是进程虚拟地址空间。对于 32 位 Windows 操作系统上的 32 位进程,此限制为 4GB。

    在没有/3GB 开关的系统上,4GB 的虚拟地址空间在正在运行的进程和 Windows 内核之间分割为 2GB / 2GB。

    当您启用 3GB 开关时,虚拟地址空间的分割更改为 3GB / 1GB。这允许进程以内核内存为代价使用更多内存。请注意:如果可执行文件已使用 IMAGEFILELARGEADDRESSAWARE 标志集进行编译,Windows 将只允许进程使用更多的 2GB 或内存。

    现在,正如其他帖子中提到的那样,使用 3GB 开关的代价是内核可以使用的内存更少。内存减少的主要损失之一是可用的页表条目 (PTE) 的数量。页表是 Windows 虚拟内存管理器用来存储内存中虚拟地址和物理地址之间的映射的数据结构。如果您没有足够的可用 PTE,则窗口可能无法在请求时为进程分配内存,即使该进程尚未耗尽其地址空间。

    可以使用 perfmon(\Memory\Free System Page Table Entries)测量可用 PTE 计数。任何低于 5000 的东西都被微软认为是关键的。例如,在原始帖子中提到的服务器上,没有 3GB 交换机并且进程正在运行,免费 PTE 计数约为 160k。在启用 3GB 之后但在进程开始之前,windows 报告了 3.5k 免费 PTE(显着减少)。如果我们开始这个过程,这个数字会迅速下降。

    弥补这一巨大变化的方法是在 boot.ini 中启用 USERVA 开关。通过设置 USERVA=2800,这会移动内存中的 3GB / 1GB 拆分,并将大约 250MB 的“回馈”给内核以供其使用。举例来说,在我们系统的 boot.ini 中设置 USERVA=2800 后,空闲 PTE 计数现在在进程运行时约为 60k(比我们看到的 3.5k 好得多)。

    有关 USERVA 开关的更多信息,请参阅 Microsoft 知识库文章。

    还值得一提的是,启用 PAE 也会对免费 PTE 计数产生影响。PAE 开关使每个 PTE 条目使用正常分配的虚拟地址空间的两倍。

    希望这为以后查看的任何人提供了一个简洁的信息摘要。

    干杯山姆

    • 2
  2. Ausmith1
    2009-07-29T20:42:39+08:002009-07-29T20:42:39+08:00

    收听RunAs Radio 的这一集。

    这一集的主要焦点涵盖了显而易见的“为什么 64 位更好”——然而,嘉宾进入了“为什么应该避免 /3GB”。基本上,它显着减少了操作系统可用的页表条目的数量——以至于操作系统变得不稳定。

    简而言之 - 它可能适用于为单一功能提供服务的服务器(如 AD 控制器或 SQL Server),但应避免在提供多种功能的系统上使用。归根结底,“您的里程可能会有所不同”——请记住,/3GB 很容易使操作系统不稳定。

    • 1
  3. Christopher_G_Lewis
    2009-08-12T21:28:03+08:002009-08-12T21:28:03+08:00

    即使应用程序只有 32 位,您也可能需要考虑 64 位操作系统。在 Windows x64 上,32 位进程获得 4GB 的 RAM,而不是 2GB。

    有关详细信息,请参阅KB294418的虚拟内存部分。

    • 1
  4. David Yu
    2009-07-23T22:16:47+08:002009-07-23T22:16:47+08:00

    据我所知,PAE 开关允许服务器上的应用程序访问 4GB 以上的内存。根据这个技术说明,应用程序并不真正了解这种内存交换,它都是在 Windows 中处理的。我认为在 6GB 服务器中使用 /3GB 开关会将内核限制为 1GB。同时使用 /3GB 和 /PAE 引入的另一个限制是服务器地址不能超过 16GB。

    除非您试图为应用程序消耗每一 MB 内存,否则您可能只想使用 /PAE 而不是 /3GB。这样一来,如果有一天您总共使用 24 或 32GB 的 RAM,您就不必尝试找出 Windows 仅使用 16GB 的原因。

    • 0
  5. Wim ten Brink
    2009-07-24T00:01:40+08:002009-07-24T00:01:40+08:00

    在我以前的系统上,我使用了 /3GB 开关,因为我的一个应用程序需要大量内存。最近,我升级到了 64 位 Vista 系统,并将应用程序升级到了 64 位版本,这使它拥有我现在拥有的全部 12 GB。但是,其他 32 位应用程序仍然受限于相同的 3 GB 内存(或没有开关的 2 GB),仅仅是因为它们无法看到超出地址指针的大小。(并且在 32 位系统中,地址指针是 32 位...)

    但是,只要 Windows 本身能够处理更大的地址指针,/3GB 开关与超过 3 GB 的 RAM 组合仍然有用。它允许 Windows 将更多的应用程序保留在内存中,因此它交换到磁盘的次数要少得多,从而提高了性能。

    PAE 是一种硬件技巧,处理器有更多的引脚来发送地址。它们已从 32 个引脚(位)增加到 36 个引脚。这允许任何知道这些附加引脚的应用程序使用高达 64 GB 的 RAM。微软在他们的服务器软件中很好地利用了这一点,因此 Windows 最多可以处理 64 GB。如果消耗这么多内存的进程也知道这些额外的引脚,它也可以分配多达 64 GB 的 RAM。这种应用程序技术称为地址窗口扩展. 当然,这也需要应用程序中的特殊代码来处理这个内存,这让我想起了旧的 MS-DOS 时代,应用程序指针最初仅限于 16 位(64 KB),但因为处理器有 20 个引脚(后来是 24 ),您可以使用特殊的 32 位指针来指向一个地址,或者只是坚持使用较旧的 16 位指针并保持在 64 KB 以内。(20 位是 1024 KB,DOS 使用底部 640 KB 或 1 GB 以上的所有内容。24 位是 4 GB,这在最初的 80386 处理器中很流行作为上限。)

    • 0
  6. Sean Earp
    2009-07-29T20:55:04+08:002009-07-29T20:55:04+08:00

    当我阅读 Mark Russinovich 的优秀文章Pushing the Limits of Windows: Physical Memory时,是的......即使在具有高达 128GB 的​​系统上,使用 /3GB 开关安装 32 位 Windows 时内核可用的 1GB 内存仍然存在RAM(支持 32 位安装的 W2K3 数据中心)。

    Windows Server 2003 Datacenter Edition 支持的最大 32 位限制为 128GB,这是因为内存管理器用于跟踪物理内存的结构会在较大系统上消耗过多的系统虚拟地址空间。内存管理器跟踪称为 PFN 数据库的数组中的每一页内存,并且为了提高性能,它将整个 PFN 数据库映射到虚拟内存中。因为它用 28 字节的数据结构表示内存的每一页,所以 128GB 系统上的 PFN 数据库大约需要 930MB。32 位 Windows 有一个由硬件定义的 4GB 虚拟地址空间,默认情况下它在当前执行的用户模式进程(例如记事本)和系统之间分割。因此,980MB 占用了几乎一半的可用 2GB 系统虚拟地址空间,

    • 0
  7. GAThrawn
    2009-08-13T12:18:37+08:002009-08-13T12:18:37+08:00

    Raymond Chen,Microsoft 的一位 Windows shell 程序员,在他的博客上有一系列关于 /3GB 开关、PAE、AWE 和 NX 的精彩文章。对于任何试图了解这一切如何运作、如何相互作用以及为什么在许多情况下它可能不是你想要的东西的人来说,它们都应该是必读的:

    http://blogs.msdn.com/oldnewthing/archive/2004/08/22/218527.aspx

    • 0

相关问题

  • 如何轻松地将 DFS 共享移动到新驱动器?

  • 如何将 Documents and Settings 文件夹移动到新驱动器并默认设置新位置?

  • 服务器 2003 R2 上的 Cisco VPN 客户端

  • 通过 VPN 更改 Active Directory 密码

  • 如何从 ISA 服务器后面安装 magento 扩展?

Sidebar

Stats

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

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +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