One of my clients, contacted me to fix one of the errors which they received while starting SQL Service. In this blog, I would share my learning about error “Unable to allocate enough memory to start ‘SQL OS Boot’. Reduce non-essential memory load or increase system memory” and how to fix it.
My customer was following the article as had a monster server of close to 2 TB RAM. Tuning options for SQL Server when running in high-performance workloads
They thought that “Large Pages” allocation would help them in a performance boost. Hence, they added trace flag 834 in SQL Server Startup Parameters and tried to restart SQL Service. Unfortunately, SQL Service failed to start, and they contacted me for quick assistance as their business was down.
I asked them to have a look at SQL Server ERRORLOG SQL SERVER – Where is ERRORLOG? Various Ways to Find ERRORLOG Location
Few last lines in the ERRORLOG file were as below:
Using large pages in the memory manager.
Page exclusion bitmap is enabled.
Large page allocation failed during memory manager initialization
Failed to initialize the memory manager
Failed to allocate pages: FAIL_PAGE_ALLOCATION 2
Error: 17138, Severity: 16, State: 1.
Unable to allocate enough memory to start the ‘SQL OS Boot’. Reduce non-essential memory load or increase system memory.
In the event log, it is logged as below.
Log Name: Application
Event ID: 17138
Task Category: Server
Unable to allocate enough memory to start ‘SQL OS Boot’. Reduce non-essential memory load or increase system memory.
I did some more online study about “large pages” and found that when SQL uses large pages, it would try to grab the complete size of max server memory during startup itself. If it can grab some reasonable amount of memory and can’t allocate further, it would continue to run with a value lower than max server memory. If it can’t grab even the minimum amount of memory, it would raise an error “Unable to allocate enough memory to start ‘SQL OS Boot’”. This can be caused due to memory fragmentation due to the server running for a long time and there are other applications running on it.
To fix the problem, first, make sure max memory is not more than the RAM. It would be a good idea to restart the operating system so that complete unfragmented memory is available for SQL Server to consume.
Reference: Pinal Dave (https://blog.sqlauthority.com)