Pointer blocks, also called indirection blocks, are file system resources that contain addresses to VMFS file blocks. When you open a vmdk file on an ESXi host, pointer blocks related to that file are stored in the pointer block cache. The size of the pointer block cache is a configurable parameter.
The pointer block cache is a host-wide cache that is independent from VMFS. The cache is shared across all datastores that are accessed from the same ESXi host.
The size of the pointer block cache is controlled by /VMFS3/MinAddressableSpaceTB and /VMFS3/MaxAddressableSpaceTB. You can configure the minimum and maximum sizes on each ESXi host.
- The minimum value is minimum amount of memory that the system guarantees to the pointer block cache. For example, 1 TB of open file space requires approximately 4 MB of memory. Default value is 10 TB.
- The parameter defines the maximum limit of pointer blocks that can be cached in memory. Default value is 32 TB. Maximum value is 128 TB. Typically, the default value of the /VMFS3/MaxAddressableSpaceTB parameter is adequate.
- However, as the size of the open vmdk files increases, the number of pointer blocks related to those files also increases. If the increase causes any performance degradation, you can adjust the parameter to its maximum value to provide more space for the pointer block cache. Base the maximum size of the pointer block cache on the working set, or the active pointer blocks required.
- Pointer Block Eviction
- The /VMFS3/MaxAddressableSpaceTB parameter also controls the growth of the pointer block cache. When the size of the pointer block cache approaches the configured maximum size, a pointer block eviction process starts. The mechanism leaves active pointer blocks, but removes non-active or less active blocks from the cache, so that space can be reused.
To change the values for the pointer block cache, use the Advanced System Settings dialog box of the vSphere Client or the esxcli system settings advanced set -o command.
You can use the esxcli storage vmfs pbcache command to obtain information about the size of the pointer block cache and other statistics. This information assists you in adjusting minimum and maximum sizes of the pointer block cache, so that you can get maximum performance.