mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
ntb_perf: Schedule based on time not on performance
When debugging performance problems, if some issue causes the ntb hardware to be significantly slower than expected, ntb_perf will hang requiring a reboot because it only schedules once every 4GB. Instead, schedule based on jiffies so it will not hang the CPU if the transfer is slow. Signed-off-by: Logan Gunthorpe <logang@deltatee.com> Acked-by: Dave Jiang <dave.jiang@intel.com> Signed-off-by: Jon Mason <jdmason@kudzu.us>
This commit is contained in:
parent
19645a0771
commit
fd2ecd885b
@ -273,6 +273,7 @@ static int perf_move_data(struct pthr_ctx *pctx, char __iomem *dst, char *src,
|
||||
char __iomem *tmp = dst;
|
||||
u64 perf, diff_us;
|
||||
ktime_t kstart, kstop, kdiff;
|
||||
unsigned long last_sleep = jiffies;
|
||||
|
||||
chunks = div64_u64(win_size, buf_size);
|
||||
total_chunks = div64_u64(total, buf_size);
|
||||
@ -288,8 +289,9 @@ static int perf_move_data(struct pthr_ctx *pctx, char __iomem *dst, char *src,
|
||||
} else
|
||||
tmp += buf_size;
|
||||
|
||||
/* Probably should schedule every 4GB to prevent soft hang. */
|
||||
if (((copied % SZ_4G) == 0) && !use_dma) {
|
||||
/* Probably should schedule every 5s to prevent soft hang. */
|
||||
if (unlikely((jiffies - last_sleep) > 5 * HZ)) {
|
||||
last_sleep = jiffies;
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
schedule_timeout(1);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user