« ND7.0.1 is Large Address Aware | Main| Notes 7.0.1 op Linux (updated 07-08-06) »

ND7.0.1 is Large Address Aware (english version)

QuickImage Category
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

This morning, I blogged in Dutch about ND7.0.1 being Large Address Aware, but given the importance I decided to publish a short English note too.

At LotuSphere 2006, we had an excellent session (ID111) on Domino and memory management, by the young and imho talented Rob Gearhart. He stated that ND7.0.1 would be Large Address Aware, making it possible to make use of an extra GB of memory space on W32 Advanced server systems. But when ND7.0.1 was released, I could not find anything about LAA in the release notes, and nobody mentioned it either. I emailed Rob about this, and yesterday he confirmed that ND7.0.1 is indeed Large Address Aware, even though it was apparently omitted in the release notes.

An ordinary W32 server can use 4 GB of memory (Virtual Address Space), which is divided in two blocks: 2 GB for the kernel (Kernel Address Space) and 2 GB for applications and processes (User Address Space). This means all Domino processes combined can't use more than 2 GB memory on a default W32 server.
On Windows W32 servers, you can use a /3GB switch in the boot.ini to change this configuration. Using this switch, the Kernel Address Space will be reduced to 1 GB, and the User Address Space will grow to 3 GB. This means that the total memory space available to applications will expand from 2 to 3 GB. But, an application has to be compiled as Large Address Aware, to recognize and make use of this extra GB of memory space. This has been done for ND7.0.1: it's the first Large Address Aware compiled Domino server release for the W32 platform.

One remark: the /3 GB switch works on NT4 Enterprise edition, Windows 2000 Advanced and Datacenter edition, Windows XP Pro, normal Windows 2003 server and heavier versions of that release.

Comments

Gravatar Image1 - Ed Brill has linked to your entry here: http://www.edbrill.com/ebrill/edbrill.nsf/dx/gerco-wolfswinkel-nd7.0.1-is-large-address-aware?opendocument&comments#anc1

My knowledge of scaling Domino on Windows is that you need to be careful when dealing with Kernel memory resources. The limitation of Domino on W-Intel dates back to this IBM support note: http://www-1.ibm.com/support/docview.wss?rs=203&q=179781&uid=swg21093511&loc=en_US&cs=utf-8&lang=en+en

I have posted a longer post at Ed Brill's site - but it is worth repeating a few words of caution. Do not implement the /3GB switch on a 32-bit Windows OS without researching and understanding the implications of reducing the available Kernel memory. The relationship between Domino server, open files (NSFs) and Kernel resources such as page-table-entries (PTEs) and Page(& Non) Pool memory is complex - and can have an adverse on your platform if you do not plan your implementation.



Gravatar Image3 - Richard, you're correct, and the ID111 slides do not give more information on this subject. Therefore, the exact impact is hard to assess right now; but doing some testing should be an interesting excercise. Maybe Rob can help us out, here!

Gravatar Image4 - I want to correct something. You say that all Domino processes combined can't use more than 2 GB, and that is essentially correct, but the reason you give is not accurate.

Every W32 process has its own 4 GB virtual address space, and can use 2 GB of that space for whatever it needs. A Domino server consists of multiple processes, so theoretically each process could use 2 GB, making the total virtual memory utilization for the whole server much larger than 2 GB.

Domino, however, makes extensive use of shared memory, and all the processes associated with a single Domino partition have to fit the shared memory within their own unique 2 GB virtual address spaces. That means that the entire shared memory space can be no larger than 2 GB -- adn actually other limits come into play so really it has to be smaller than that.

Still, if all the processes for one Domino partition used 1 GB of shared memory and 1 GB of their own memory, the total for each process would be 2 GB but the total for the whole server would be much greater than 2 GB... but Domino processes just don't use a lot of non-shared memory. All large data structures are in shared memory. The result is that for all practical purposes, Domino servers don't exceed 2 GB of virtual memory utilization per partition.

The impact of the large address aware compilation of 7.0.1 will depend on what that implies about shared memory limits. I don't recall what Rob said about that in the session.

Post A Comment

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

OpenNTF random projects

PlanetLotus