Skip to content

Commit

Permalink
Fix code
Browse files Browse the repository at this point in the history
  • Loading branch information
eduardo-vp committed Mar 22, 2024
1 parent 6cfd3b3 commit cf053ab
Showing 1 changed file with 19 additions and 15 deletions.
34 changes: 19 additions & 15 deletions src/coreclr/vm/yieldprocessornormalized.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ enum class NormalizationState : UINT8
};

static const int NsPerYieldMeasurementCount = 8;
static const int PartialInitializationMeasurementCount = 2; // number of measurements to be done during partial initialization
static const unsigned int MeasurementPeriodMs = 4000;
static const int s_partialInitializationMeasurementCount = 2; // number of measurements to be done during partial initialization

static const unsigned int NsPerS = 1000 * 1000 * 1000;

Expand Down Expand Up @@ -122,7 +122,7 @@ void YieldProcessorNormalization::PerformMeasurement()

_ASSERTE(s_isMeasurementScheduled ^ (s_normalizationState == NormalizationState::Uninitialized));

double latestNsPerYield = 0; // initialize to supress error C4701
double latestNsPerYield;
if (s_normalizationState == NormalizationState::Initialized)
{
if (GetTickCount() - s_previousNormalizationTimeMs < MeasurementPeriodMs)
Expand Down Expand Up @@ -154,15 +154,16 @@ void YieldProcessorNormalization::PerformMeasurement()
s_performanceCounterTicksPerS = li.QuadPart;

startIndex = 0;
endIndex = s_partialInitializationMeasurementCount;
endIndex = PartialInitializationMeasurementCount;
}
else
{
startIndex = s_partialInitializationMeasurementCount;
startIndex = PartialInitializationMeasurementCount;
endIndex = NsPerYieldMeasurementCount;
}

unsigned int measureDurationUs = DetermineMeasureDurationUs();
latestNsPerYield = 0;
for (int i = startIndex; i < endIndex; ++i)
{
latestNsPerYield = MeasureNsPerYield(measureDurationUs);
Expand All @@ -172,16 +173,11 @@ void YieldProcessorNormalization::PerformMeasurement()
AtomicStore(&s_establishedNsPerYield, latestNsPerYield);
}

if (i < NsPerYieldMeasurementCount - 1)
if (i < endIndex - 1)
{
FireEtwYieldProcessorMeasurement(GetClrInstanceId(), latestNsPerYield, s_establishedNsPerYield);
}
}

s_normalizationState =
(s_normalizationState == NormalizationState::Uninitialized) ?
NormalizationState::PartiallyInitialized :
NormalizationState::Initialized;
}
else
{
Expand All @@ -191,8 +187,8 @@ void YieldProcessorNormalization::PerformMeasurement()

double establishedNsPerYield = s_nsPerYieldMeasurements[0];
int endIndex =
(s_normalizationState == NormalizationState::PartiallyInitialized) ?
s_partialInitializationMeasurementCount :
(s_normalizationState == NormalizationState::Uninitialized) ?
PartialInitializationMeasurementCount :
NsPerYieldMeasurementCount;
for (int i = 1; i < endIndex; ++i)
{
Expand Down Expand Up @@ -223,7 +219,15 @@ void YieldProcessorNormalization::PerformMeasurement()

GCHeapUtilities::GetGCHeap()->SetYieldProcessorScalingFactor((float)yieldsPerNormalizedYield);

s_previousNormalizationTimeMs = GetTickCount();
if (s_normalizationState != NormalizationState::Uninitialized)
{
s_previousNormalizationTimeMs = GetTickCount();
}

s_normalizationState =
(s_normalizationState == NormalizationState::Uninitialized) ?
NormalizationState::PartiallyInitialized :
NormalizationState::Initialized;
s_isMeasurementScheduled = false;
}

Expand All @@ -239,14 +243,14 @@ void YieldProcessorNormalization::ScheduleMeasurementIfNecessary()
CONTRACTL_END;

NormalizationState normalizationState = VolatileLoadWithoutBarrier(&s_normalizationState);
if (normalizationState == NormalizationState::Initialized || normalizationState == NormalizationState::PartiallyInitialized)
if (normalizationState == NormalizationState::Initialized)
{
if (GetTickCount() - s_previousNormalizationTimeMs < MeasurementPeriodMs)
{
return;
}
}
else if (normalizationState == NormalizationState::Uninitialized)
else if (normalizationState == NormalizationState::Uninitialized || normalizationState == NormalizationState::PartiallyInitialized)
{
}
else
Expand Down

0 comments on commit cf053ab

Please sign in to comment.