mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-09 08:21:29 +12:00
CPU preemption control: Add one more debug variable
This commit is contained in:
parent
2807be7080
commit
9c5108c1ca
2 changed files with 5 additions and 1 deletions
|
@ -1211,6 +1211,7 @@ static std::deque<class cpu_thread*> g_to_sleep;
|
||||||
static atomic_t<u64> s_yield_frequency = 0;
|
static atomic_t<u64> s_yield_frequency = 0;
|
||||||
static atomic_t<u64> s_max_allowed_yield_tsc = 0;
|
static atomic_t<u64> s_max_allowed_yield_tsc = 0;
|
||||||
static u64 s_last_yield_tsc = 0;
|
static u64 s_last_yield_tsc = 0;
|
||||||
|
atomic_t<u32> g_lv2_preempts_taken = 0;
|
||||||
|
|
||||||
namespace cpu_counter
|
namespace cpu_counter
|
||||||
{
|
{
|
||||||
|
@ -1676,6 +1677,7 @@ void lv2_obj::schedule_all(u64 current_time)
|
||||||
{
|
{
|
||||||
cpu->state += cpu_flag::preempt;
|
cpu->state += cpu_flag::preempt;
|
||||||
s_last_yield_tsc = tsc;
|
s_last_yield_tsc = tsc;
|
||||||
|
g_lv2_preempts_taken.release(g_lv2_preempts_taken.load() + 1); // Has a minor race but performance is more important
|
||||||
rsx::set_rsx_yield_flag();
|
rsx::set_rsx_yield_flag();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1768,6 +1770,7 @@ void lv2_obj::set_yield_frequency(u64 freq, u64 max_allowed_tsc)
|
||||||
{
|
{
|
||||||
s_yield_frequency.release(freq);
|
s_yield_frequency.release(freq);
|
||||||
s_max_allowed_yield_tsc.release(max_allowed_tsc);
|
s_max_allowed_yield_tsc.release(max_allowed_tsc);
|
||||||
|
g_lv2_preempts_taken.release(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool lv2_obj::wait_timeout(u64 usec, ppu_thread* cpu, bool scale, bool is_usleep)
|
bool lv2_obj::wait_timeout(u64 usec, ppu_thread* cpu, bool scale, bool is_usleep)
|
||||||
|
|
|
@ -42,6 +42,7 @@ rsx::frame_capture_data frame_capture;
|
||||||
|
|
||||||
extern CellGcmOffsetTable offsetTable;
|
extern CellGcmOffsetTable offsetTable;
|
||||||
extern thread_local std::string(*g_tls_log_prefix)();
|
extern thread_local std::string(*g_tls_log_prefix)();
|
||||||
|
extern atomic_t<u32> g_lv2_preempts_taken;
|
||||||
|
|
||||||
LOG_CHANNEL(perf_log, "PERF");
|
LOG_CHANNEL(perf_log, "PERF");
|
||||||
|
|
||||||
|
@ -3645,7 +3646,7 @@ namespace rsx
|
||||||
lower_preemption_count();
|
lower_preemption_count();
|
||||||
}
|
}
|
||||||
|
|
||||||
perf_log.trace("CPU preemption control: reeval=%d, preempt_count=%d, fails=%d, hard=%d, avg_frame_time=%d, highered=%d, lowered=%d", can_reevaluate, preempt_count, fails, hard_fails, avg_frame_time, highered_delay, lowered_delay);
|
perf_log.trace("CPU preemption control: reeval=%d, preempt_count=%d, fails=%d, hard=%d, avg_frame_time=%d, highered=%d, lowered=%d, taken=%u", can_reevaluate, preempt_count, fails, hard_fails, avg_frame_time, highered_delay, lowered_delay, ::g_lv2_preempts_taken.load());
|
||||||
|
|
||||||
if (hard_measures_taken)
|
if (hard_measures_taken)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue