private static int CalculateMemoryBlockSize(int pageSize, long totalSystemMemory)
{
long targetMemoryBlockSize = totalSystemMemory / 1000;
targetMemoryBlockSize = Math.Min(targetMemoryBlockSize, 1024 * 1024 * 1024);
targetMemoryBlockSize = targetMemoryBlockSize - (targetMemoryBlockSize % pageSize);
targetMemoryBlockSize = (int)Math.Max(targetMemoryBlockSize, pageSize);
targetMemoryBlockSize = (int)BitMath.RoundUpToNearestPowerOfTwo((ulong)targetMemoryBlockSize);
return (int)targetMemoryBlockSize;
}