2022-11-09 10:10:05

by Wang Wensheng

[permalink] [raw]
Subject: [PATCH -next 0/3] Optimize code for ftrace

Those are small optimizations discovered by code review.

Wang Wensheng (3):
ftrace: Fix the possible incorrect kernel message
ftrace: Optimize the allocation for mcount entries
ftrace: Delete unused variable ftrace_update_time

kernel/trace/ftrace.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)

--
2.17.1



2022-11-09 11:12:46

by Wang Wensheng

[permalink] [raw]
Subject: [PATCH -next 2/3] ftrace: Optimize the allocation for mcount entries

If we can't allocate this size, try something smaller with half of the
size. Its order should be decreased by one instead of divided by two.

Signed-off-by: Wang Wensheng <[email protected]>
---
kernel/trace/ftrace.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index c571c2813c11..43a958b28022 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -3200,7 +3200,7 @@ static int ftrace_allocate_records(struct ftrace_page *pg, int count)
/* if we can't allocate this size, try something smaller */
if (!order)
return -ENOMEM;
- order >>= 1;
+ order--;
goto again;
}

--
2.17.1


2022-11-09 11:24:45

by Wang Wensheng

[permalink] [raw]
Subject: [PATCH -next 3/3] ftrace: Delete unused variable ftrace_update_time

ftrace_update_time is not used anywhere else after initialization. So
delete it together with its initial code.

Signed-off-by: Wang Wensheng <[email protected]>
---
kernel/trace/ftrace.c | 6 ------
1 file changed, 6 deletions(-)

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 43a958b28022..3e102c44b117 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -3110,7 +3110,6 @@ int ftrace_shutdown(struct ftrace_ops *ops, int command)
return 0;
}

-static u64 ftrace_update_time;
unsigned long ftrace_update_tot_cnt;
unsigned long ftrace_number_of_pages;
unsigned long ftrace_number_of_groups;
@@ -3130,13 +3129,10 @@ static int ftrace_update_code(struct module *mod, struct ftrace_page *new_pgs)
bool init_nop = ftrace_need_init_nop();
struct ftrace_page *pg;
struct dyn_ftrace *p;
- u64 start, stop;
unsigned long update_cnt = 0;
unsigned long rec_flags = 0;
int i;

- start = ftrace_now(raw_smp_processor_id());
-
/*
* When a module is loaded, this function is called to convert
* the calls to mcount in its text to nops, and also to create
@@ -3173,8 +3169,6 @@ static int ftrace_update_code(struct module *mod, struct ftrace_page *new_pgs)
}
}

- stop = ftrace_now(raw_smp_processor_id());
- ftrace_update_time = stop - start;
ftrace_update_tot_cnt += update_cnt;

return 0;
--
2.17.1


2022-11-17 21:12:30

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH -next 3/3] ftrace: Delete unused variable ftrace_update_time

On Wed, 9 Nov 2022 09:44:34 +0000
Wang Wensheng <[email protected]> wrote:

> ftrace_update_time is not used anywhere else after initialization. So
> delete it together with its initial code.

Thanks for the first two patches. They are definitely fixes and I plan on
testing and adding them to my next pull request.

As for this one, this has been more of a reminder for me to one day (I
know, it's been years!) to export this to see from user space. I sometimes
do it manually with a printk(), but it should probably be always shown.
Perhaps in dyn_ftrace_total_info ?

-- Steve