Use spinlock instead of lwlock per tenant

pull/6868/head
Gokhan Gulbiz 2023-04-19 10:09:23 +03:00
parent 08e2820c67
commit b437aa9e52
No known key found for this signature in database
GPG Key ID: 608EF06B6BD1B45B
2 changed files with 6 additions and 15 deletions

View File

@ -50,7 +50,6 @@ static clock_t QueryEndClock = { 0 };
static const char *SharedMemoryNameForMultiTenantMonitor =
"Shared memory for multi tenant monitor";
static char *TenantTrancheName = "Tenant Tranche";
static char *MonitorTrancheName = "Multi Tenant Monitor Tranche";
static shmem_startup_hook_type prev_shmem_startup_hook = NULL;
@ -358,13 +357,13 @@ AttributeMetricsIfApplicable()
if (currentTenantIndex != -1)
{
TenantStats *tenantStats = &monitor->tenants[currentTenantIndex];
LWLockAcquire(&tenantStats->lock, LW_EXCLUSIVE);
SpinLockAcquire(&tenantStats->lock);
UpdatePeriodsIfNecessary(tenantStats, queryTime);
ReduceScoreIfNecessary(tenantStats, queryTime);
RecordTenantStats(tenantStats, queryTime);
LWLockRelease(&tenantStats->lock);
SpinLockRelease(&tenantStats->lock);
}
else
{
@ -385,13 +384,13 @@ AttributeMetricsIfApplicable()
if (currentTenantIndex != -1)
{
TenantStats *tenantStats = &monitor->tenants[currentTenantIndex];
LWLockAcquire(&tenantStats->lock, LW_EXCLUSIVE);
SpinLockAcquire(&tenantStats->lock);
UpdatePeriodsIfNecessary(tenantStats, queryTime);
ReduceScoreIfNecessary(tenantStats, queryTime);
RecordTenantStats(tenantStats, queryTime);
LWLockRelease(&tenantStats->lock);
SpinLockRelease(&tenantStats->lock);
}
}
LWLockRelease(&monitor->lock);
@ -659,14 +658,7 @@ CreateTenantStats(MultiTenantMonitor *monitor, TimestampTz queryTime)
strcpy_s(monitor->tenants[tenantIndex].tenantAttribute,
sizeof(monitor->tenants[tenantIndex].tenantAttribute), AttributeToTenant);
monitor->tenants[tenantIndex].colocationGroupId = AttributeToColocationGroupId;
monitor->tenants[tenantIndex].namedLockTranche.trancheId = LWLockNewTrancheId();
monitor->tenants[tenantIndex].namedLockTranche.trancheName = TenantTrancheName;
LWLockRegisterTranche(monitor->tenants[tenantIndex].namedLockTranche.trancheId,
monitor->tenants[tenantIndex].namedLockTranche.trancheName);
LWLockInitialize(&monitor->tenants[tenantIndex].lock,
monitor->tenants[tenantIndex].namedLockTranche.trancheId);
SpinLockInit(&monitor->tenants[tenantIndex].lock);
monitor->tenantCount++;

View File

@ -70,8 +70,7 @@ typedef struct TenantStats
/*
* Locks needed to update this tenant's statistics.
*/
NamedLWLockTranche namedLockTranche;
LWLock lock;
slock_t lock;
} TenantStats;
/*