36 lines
1.1 KiB
Transact-SQL
36 lines
1.1 KiB
Transact-SQL
DECLARE @oneGb INT = 1024; -- MB
|
|
|
|
-- "hard coded" options
|
|
DECLARE @architecture NVARCHAR(10) = 'x64';
|
|
DECLARE @totalram INT = 16 * @oneGb;
|
|
DECLARE @corenumber INT = 2;
|
|
DECLARE @otherApps INT = 0; --reserved ram for other apps in Mo
|
|
|
|
-- Thread stack sizes in MB
|
|
DECLARE @threadStackSizes TABLE (Architecture NVARCHAR(10), Size INT);
|
|
INSERT INTO @threadStackSizes VALUES ('x86', 1), ('x64', 2), ('IA64', 4);
|
|
|
|
DECLARE @threadStackSize INT;
|
|
SELECT @threadStackSize = Size FROM @threadStackSizes WHERE Architecture = @architecture;
|
|
|
|
DECLARE @osReservedPart FLOAT;
|
|
SET @osReservedPart = CASE WHEN @totalram < (20 * @oneGb) THEN 0.2 ELSE 0.125 END;
|
|
|
|
DECLARE @forOS INT;
|
|
SET @forOS = CAST(@totalram * @osReservedPart AS INT);
|
|
|
|
DECLARE @coretemp INT;
|
|
SET @coretemp = CASE WHEN @corenumber > 4 THEN 0 ELSE @corenumber END;
|
|
|
|
DECLARE @sqlThreads INT;
|
|
SET @sqlThreads = 256 + (@coretemp - 4) * 8;
|
|
|
|
DECLARE @temp FLOAT;
|
|
SET @temp = @corenumber / 4.0;
|
|
|
|
DECLARE @maxMemory INT;
|
|
SET @maxMemory = @totalram - @forOS - @otherApps - (@sqlThreads * @threadStackSize) - (1024 * CEILING(@temp));
|
|
|
|
-- Display the result
|
|
SELECT @maxMemory AS 'Max Memory (MB)';
|