Unfortunately I have to report a problem with NVX_gpu_memory_info extension. 
Calls before the first memory allocation works correctly (with both GL 2.1 and 3.3), but after that the readings are unpredictable. This is a dump form my application:
// Before first allocation (just after context creation)
Dedicated mem: 524288[kb]
Total available mem: 524288[kb]
Current available mem: 470100[kb]
Eviction count: 328
Evicted mem: 589520[kb]
---------------------------
// After application has loaded all data, up and running
Dedicated mem: 0[kb]
Total available mem: 1691160124[kb]
Current available mem: 0[kb]
Eviction count: 1691686003
Evicted mem: 28271216[kb]
---------------------------
This is another example with less data loaded
// Before first allocation (just after context creation)
Dedicated mem: 524288[kb]
Total available mem: 524288[kb]
Current available mem: 470100[kb]
Eviction count: 328
Evicted mem: 589520[kb]
---------------------------
// After application has loaded all data, up and running
Dedicated mem: 3539058[kb]
Total available mem: 3277212[kb]
Current available mem: 0[kb]
Eviction count: 3276800
Evicted mem: 1999443921[kb]
Obviously meaningless, or I don’t know how to use this extension. The drivers are 197.15, and the test was carried out on Vista 32bit.
The function I have used is very simple:
CString GLRenderer::GetMemInfo()
{
int dedVideoMem,totalAvailableMem, curAvailableMem, evictionCount, evictedMem;
glGetIntegerv(0x9047, &dedVideoMem);
glGetIntegerv(0x9048, &totalAvailableMem);
glGetIntegerv(0x9049, &curAvailableMem);
glGetIntegerv(0x904A, &evictionCount);
glGetIntegerv(0x904B, &evictedMem);
CString strMem;
strMem.Format(_T("Dedicated mem: %d[kb]
Total available mem: %d[kb]
Current available mem: %d[kb]
Eviction count: %d
Evicted mem: %d[kb]"),
dedVideoMem,totalAvailableMem, curAvailableMem, evictionCount, evictedMem);
CADebugger::SaveString(strMem,_T("MemDump.txt"));
return strMem;
}