I am using a VM on Azure D12_v2 (4 cores, 28 GB) to run SQL Server, using the Buffer Pool Extension feature. I have dedicated 100 GB of SSD for the BPE. I am constantly monitoring buffer pool memory through the sys.dm_os_buffer_descriptorsDMV, using the is_in_bpool_extension to check pages in BPE. I use the following query for checking memory buffers.
SELECT SUM(1-is_in_bpool_extension)*8/1024 RAM_MB, SUM(is_in_bpool_extension*1)*8/1024 BPE_MB FROM sys.dm_os_buffer_descriptors(nolock)
While the Server is warming I am noticing a constant increase in buffer pool memory until it reaches almost 20 GB of memory without using BPE. When BPE starts getting data, I am noticing a constant decrease in buffers in standard memory given by this query (for example 14GB and 8GB in BPE, 9GB and 20GB in BPE, etc). Now, after 5 days, I see 5GB in RAM and 46GB in BPE. Does this means I am loosing buffers from standard memory? Or many buffers coexist in RAM and BPE and the bit nature of the field is_in_bpool_extension cannot reflect what exactly happening?
As you understand RAM is much faster than SSD (one metric I have is 10691 MB/s for RAM speed, and50 MB/s for SSD speed for this kind of machines. If I am loosing buffers from RAM it seems using BPE is not a good option. Anyway, I don't see any server performance problem, but I am not sure I see it in full workload these days.
Can anybody explain to me what is happening and why I am getting these results?
PS: On this server coexist almost 80 databases of a total size 200 GB, using a typical medium sized ERP workload.
Thanks,
Dimitris