* [PATCH ncns v1 0/2] Small optimization and improve debugging experience
@ 2022-10-19 16:43 Ammar Faizi
2022-10-19 16:43 ` [PATCH ncns v1 1/2] chnet: Optimize `put_thread()` path Ammar Faizi
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Ammar Faizi @ 2022-10-19 16:43 UTC (permalink / raw)
To: Alviro Iskandar Setiawan
Cc: Ammar Faizi, Muhammad Rizki, GNU/Weeb Mailing List
Hi,
There are two patches in this series. The first one is just a small
optimization and the second one is a debugging experience improvement.
# Patch 1
chnet: Optimize put_thread() path
The `delete` call doesn't have to be protected by mutex. Move it
to the outside of the locked region to reduce the `put_thread()`
critical section time.
# Patch 2
chnet: Add thread index specifier for chromium thread
Currently, all threads created by the chromium thread pool have task
comm name "chromium_thread". This naming is not helpful when we're
debugging multiple chromium threads. Set the name to "chromium-%u"
where %u is the thread index in the pool. It creates a way to
identify each chromium thread uniquely.
Please review!
Signed-off-by: Ammar Faizi <[email protected]>
---
Ammar Faizi (2):
chnet: Optimize `put_thread()` path
chnet: Add thread index specifier for chromium thread
chnet/chnet.cc | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
--
Ammar Faizi
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH ncns v1 1/2] chnet: Optimize `put_thread()` path
2022-10-19 16:43 [PATCH ncns v1 0/2] Small optimization and improve debugging experience Ammar Faizi
@ 2022-10-19 16:43 ` Ammar Faizi
2022-10-19 16:43 ` [PATCH ncns v1 2/2] chnet: Add thread index specifier for chromium thread Ammar Faizi
2022-10-19 22:36 ` [PATCH ncns v1 0/2] Small optimization and improve debugging experience Alviro Iskandar Setiawan
2 siblings, 0 replies; 7+ messages in thread
From: Ammar Faizi @ 2022-10-19 16:43 UTC (permalink / raw)
To: Alviro Iskandar Setiawan
Cc: Ammar Faizi, Muhammad Rizki, GNU/Weeb Mailing List
The `delete` call doesn't have to be protected by mutex. Move it
to the outside of the locked region to reduce the `put_thread()`
critical section time.
Signed-off-by: Ammar Faizi <[email protected]>
---
chnet/chnet.cc | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/chnet/chnet.cc b/chnet/chnet.cc
index e6b4c64..ba3c076 100644
--- a/chnet/chnet.cc
+++ b/chnet/chnet.cc
@@ -746,10 +746,13 @@ static void put_thread(void *thread)
if (--th->ref_count_ == 0) {
if (g_thpool)
g_thpool[th->idx_] = nullptr;
-
- delete th;
+ } else {
+ th = nullptr;
}
g_thpool_lock_.unlock();
+
+ if (th)
+ delete th;
}
static void init_g_ch_thpool(void)
--
Ammar Faizi
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH ncns v1 2/2] chnet: Add thread index specifier for chromium thread
2022-10-19 16:43 [PATCH ncns v1 0/2] Small optimization and improve debugging experience Ammar Faizi
2022-10-19 16:43 ` [PATCH ncns v1 1/2] chnet: Optimize `put_thread()` path Ammar Faizi
@ 2022-10-19 16:43 ` Ammar Faizi
2022-10-19 22:38 ` Alviro Iskandar Setiawan
2022-10-19 22:36 ` [PATCH ncns v1 0/2] Small optimization and improve debugging experience Alviro Iskandar Setiawan
2 siblings, 1 reply; 7+ messages in thread
From: Ammar Faizi @ 2022-10-19 16:43 UTC (permalink / raw)
To: Alviro Iskandar Setiawan
Cc: Ammar Faizi, Muhammad Rizki, GNU/Weeb Mailing List
Currently, all threads created by the chromium thread pool have task
comm name "chromium_thread". This naming is not helpful when we're
debugging multiple chromium threads. Set the name to "chromium-%u"
where %u is the thread index in the pool. It creates a way to
identify each chromium thread uniquely.
Signed-off-by: Ammar Faizi <[email protected]>
---
chnet/chnet.cc | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/chnet/chnet.cc b/chnet/chnet.cc
index ba3c076..32078cc 100644
--- a/chnet/chnet.cc
+++ b/chnet/chnet.cc
@@ -664,11 +664,20 @@ public:
uint32_t ref_count_;
uint32_t idx_;
- ch_thpool(void);
+ ch_thpool(uint32_t i);
+
+private:
+ inline static std::string gen_thread_name(uint32_t i)
+ {
+ char name[sizeof("chromium-xxxxxxxx")];
+
+ snprintf(name, sizeof(name), "chromium-%u", i);
+ return std::string(name);
+ }
};
-ch_thpool::ch_thpool(void):
- thread_("chromium_thread"),
+ch_thpool::ch_thpool(uint32_t i):
+ thread_(gen_thread_name(i)),
ref_count_(0)
{
CHECK((void *)this == (void *)&thread_);
@@ -698,7 +707,7 @@ static base::Thread *get_thread(void)
tmp = thp[0];
if (!tmp) {
- ret = new struct ch_thpool;
+ ret = new struct ch_thpool(0);
ret->idx_ = 0;
thp[0] = ret;
goto out;
@@ -711,7 +720,7 @@ static base::Thread *get_thread(void)
tmp = thp[i];
if (!tmp) {
- ret = new struct ch_thpool;
+ ret = new struct ch_thpool(i);
ret->idx_ = i;
thp[i] = ret;
goto out;
--
Ammar Faizi
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH ncns v1 0/2] Small optimization and improve debugging experience
2022-10-19 16:43 [PATCH ncns v1 0/2] Small optimization and improve debugging experience Ammar Faizi
2022-10-19 16:43 ` [PATCH ncns v1 1/2] chnet: Optimize `put_thread()` path Ammar Faizi
2022-10-19 16:43 ` [PATCH ncns v1 2/2] chnet: Add thread index specifier for chromium thread Ammar Faizi
@ 2022-10-19 22:36 ` Alviro Iskandar Setiawan
2022-10-19 22:53 ` Ammar Faizi
2 siblings, 1 reply; 7+ messages in thread
From: Alviro Iskandar Setiawan @ 2022-10-19 22:36 UTC (permalink / raw)
To: Ammar Faizi; +Cc: Muhammad Rizki, GNU/Weeb Mailing List
On Wed, Oct 19, 2022 at 11:43 PM Ammar Faizi wrote:
> # Patch 1
> chnet: Optimize put_thread() path
>
> The `delete` call doesn't have to be protected by mutex. Move it
> to the outside of the locked region to reduce the `put_thread()`
> critical section time.
or we shouldn't delete it at all?
-- Viro
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH ncns v1 2/2] chnet: Add thread index specifier for chromium thread
2022-10-19 16:43 ` [PATCH ncns v1 2/2] chnet: Add thread index specifier for chromium thread Ammar Faizi
@ 2022-10-19 22:38 ` Alviro Iskandar Setiawan
0 siblings, 0 replies; 7+ messages in thread
From: Alviro Iskandar Setiawan @ 2022-10-19 22:38 UTC (permalink / raw)
To: Ammar Faizi; +Cc: Muhammad Rizki, GNU/Weeb Mailing List
On Wed, Oct 19, 2022 at 11:43 PM Ammar Faizi wrote:
> Currently, all threads created by the chromium thread pool have task
> comm name "chromium_thread". This naming is not helpful when we're
> debugging multiple chromium threads. Set the name to "chromium-%u"
> where %u is the thread index in the pool. It creates a way to
> identify each chromium thread uniquely.
>
> Signed-off-by: Ammar Faizi <[email protected]>
Acked-by: Alviro Iskandar Setiawan <[email protected]>
tq
-- Viro
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH ncns v1 0/2] Small optimization and improve debugging experience
2022-10-19 22:36 ` [PATCH ncns v1 0/2] Small optimization and improve debugging experience Alviro Iskandar Setiawan
@ 2022-10-19 22:53 ` Ammar Faizi
2022-10-19 22:56 ` Alviro Iskandar Setiawan
0 siblings, 1 reply; 7+ messages in thread
From: Ammar Faizi @ 2022-10-19 22:53 UTC (permalink / raw)
To: Alviro Iskandar Setiawan; +Cc: Muhammad Rizki, GNU/Weeb Mailing List
On 10/20/22 5:36 AM, Alviro Iskandar Setiawan wrote:
> or we shouldn't delete it at all?
We should delete it when the ref count reaches zero for
the memory reclamation guarantee. We don't want to keep
eating memory while not using the allocated thread pool.
--
Ammar Faizi
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH ncns v1 0/2] Small optimization and improve debugging experience
2022-10-19 22:53 ` Ammar Faizi
@ 2022-10-19 22:56 ` Alviro Iskandar Setiawan
0 siblings, 0 replies; 7+ messages in thread
From: Alviro Iskandar Setiawan @ 2022-10-19 22:56 UTC (permalink / raw)
To: Ammar Faizi; +Cc: Muhammad Rizki, GNU/Weeb Mailing List
On Thu, Oct 20, 2022 at 5:53 AM Ammar Faizi wrote:
> On 10/20/22 5:36 AM, Alviro Iskandar Setiawan wrote:
> > or we shouldn't delete it at all?
>
> We should delete it when the ref count reaches zero for
> the memory reclamation guarantee. We don't want to keep
> eating memory while not using the allocated thread pool.
ic ic
Acked-by: Alviro Iskandar Setiawan <[email protected]>
tq
-- Viro
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-10-19 22:57 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-19 16:43 [PATCH ncns v1 0/2] Small optimization and improve debugging experience Ammar Faizi
2022-10-19 16:43 ` [PATCH ncns v1 1/2] chnet: Optimize `put_thread()` path Ammar Faizi
2022-10-19 16:43 ` [PATCH ncns v1 2/2] chnet: Add thread index specifier for chromium thread Ammar Faizi
2022-10-19 22:38 ` Alviro Iskandar Setiawan
2022-10-19 22:36 ` [PATCH ncns v1 0/2] Small optimization and improve debugging experience Alviro Iskandar Setiawan
2022-10-19 22:53 ` Ammar Faizi
2022-10-19 22:56 ` Alviro Iskandar Setiawan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox