Understood, thanks. We are looking right now into a problem (possible 
performance regression) related to specific Linux kernels FUTEX 
implementations. So, we were interested in locking performance tests and added 
the other extension yesterday.

Cheers,

Henning

From: Daniel-Constantin Mierla <mico...@gmail.com>
Sent: Donnerstag, 17. Juli 2025 10:08
To: Henning Westerholt <h...@gilawa.com>; Kamailio (SER) - Development Mailing 
List <sr-dev@lists.kamailio.org>
Subject: Re: [sr-dev] git:master:4e474036: misctest: modparam and function to 
test internal locks with pthreads


The misctest function(s) purpose is to test if internal locks are safe to use 
across many threads, added them to be able to test easier on different CPUs . 
Not sure if that's what you look for, you can add more if you need something 
else.

Cheers,
Daniel
On 17.07.25 09:46, Henning Westerholt wrote:

Thanks for adding this. I was thinking of adding a timer-based approach for 
concurrent locking stress (similar as the memory tests), but this is probably 
more suitable. We will test it as well today.



Cheers,



Henning



-----Original Message-----

From: Daniel-Constantin Mierla via sr-dev 
<sr-dev@lists.kamailio.org><mailto:sr-dev@lists.kamailio.org>

Sent: Donnerstag, 17. Juli 2025 09:26

To: sr-dev@lists.kamailio.org<mailto:sr-dev@lists.kamailio.org>

Cc: Daniel-Constantin Mierla <mico...@gmail.com><mailto:mico...@gmail.com>

Subject: [sr-dev] git:master:4e474036: misctest: modparam and function to

test internal locks with pthreads



Module: kamailio

Branch: master

Commit: 4e474036be1d862e63536ad94cc284c52e04a8a6

URL:

https://github.com/kamailio/kamailio/commit/4e474036be1d862e63536ad

94cc284c52e04a8a6



Author: Daniel-Constantin Mierla <mico...@gmail.com><mailto:mico...@gmail.com>

Committer: Daniel-Constantin Mierla 
<mico...@gmail.com><mailto:mico...@gmail.com>

Date: 2025-07-17T08:48:54+02:00



misctest: modparam and function to test internal locks with pthreads



---



Modified: src/modules/misctest/misctest_mod.c



---



Diff:

https://github.com/kamailio/kamailio/commit/4e474036be1d862e63536ad

94cc284c52e04a8a6.diff

Patch:

https://github.com/kamailio/kamailio/commit/4e474036be1d862e63536ad

94cc284c52e04a8a6.patch



---



diff --git a/src/modules/misctest/misctest_mod.c

b/src/modules/misctest/misctest_mod.c

index 50863ea1554..519d68ab81a 100644

--- a/src/modules/misctest/misctest_mod.c

+++ b/src/modules/misctest/misctest_mod.c

@@ -59,6 +59,7 @@ static int mt_mem_alloc_f(struct sip_msg *, char *, char

*);  static int mt_mem_free_f(struct sip_msg *, char *, char *);  static int

mt_tcp_thread_exec_f(sip_msg_t *, char *, char *);  static int

mt_lock_test_f(struct sip_msg *, char *, char *);

+static int mt_lock_threads_f(sip_msg_t *, char *, char *);

 static int mod_init(void);

 static void mod_destroy(void);



@@ -71,12 +72,17 @@ static int misctest_message = 0;  static str

misctest_message_data = STR_NULL;  static str misctest_message_file =

STR_NULL;



+static int misctest_lock_threads_mode = 0; gen_lock_t

+*_misctest_lock_threads = NULL;

+

 /* clang-format off */

 static cmd_export_t cmds[]={

  {"mt_mem_alloc", mt_mem_alloc_f, 1, fixup_var_int_1, 0,

ANY_ROUTE},

  {"mt_mem_free", mt_mem_free_f, 1, fixup_var_int_1, 0,

ANY_ROUTE},

  {"mt_tcp_thread_exec", mt_tcp_thread_exec_f, 1, fixup_spve_null, 0,

ANY_ROUTE},

  {"mt_lock_test", mt_lock_test_f, 1, fixup_var_int_1, 0, ANY_ROUTE},

+ {"mt_lock_threads", mt_lock_threads_f, 1, fixup_igp_null,

+         fixup_free_igp_null, ANY_ROUTE},

  {0, 0, 0, 0, 0}

 };

 /* clang-format on */

@@ -125,6 +131,7 @@ static param_export_t params[]={

  {"message_data", PARAM_STR, &misctest_message_data},

  {"message_file", PARAM_STR, &misctest_message_file},

  {"mem_check_content", PARAM_INT,

&default_mt_cfg.mem_check_content},

+ {"lock_threads_mode", PARAM_INT, &misctest_lock_threads_mode},

  {0,0,0}

 };

 /* clang-format on */

@@ -285,6 +292,15 @@ static int mod_init(void)

          return -1;

  }



+ if(misctest_lock_threads_mode != 0) {

+         _misctest_lock_threads = lock_alloc();

+         if(_misctest_lock_threads == NULL) {

+                 LM_ERR("failed to alloc lock\n");

+                 goto error;

+         }

+         lock_init(_misctest_lock_threads);

+ }

+

  return 0;

 error:

  return -1;

@@ -1021,6 +1037,48 @@ static int mt_lock_test_f(struct sip_msg *msg,

char *sz, char *foo)

  return lock_test(size) >= 0 ? 1 : -1;

 }



+static void *mt_lock_threads_exec(void *param) {

+ int pidx = 0;

+

+ pidx = (int)(long)param;

+

+ while(1) {

+         LM_INFO("==== before acquiring the lock (idx: %d)\n", pidx);

+         lock_get(_misctest_lock_threads);

+         LM_INFO("==== after acquiring the lock (idx: %d)\n", pidx);

+ }

+ return NULL;

+}

+

+static int mt_lock_threads_f(sip_msg_t *msg, char *pn, char *p2) {

+ int i;

+ int n;

+ pthread_t tid;

+

+ if(fixup_get_ivalue(msg, (gparam_t *)pn, &n) < 0) {

+         LM_ERR("invalid parameter\n");

+         return -1;

+ }

+

+ if(_misctest_lock_threads == NULL) {

+         LM_ERR("the lock is not initialized\n");

+         goto error;

+ }

+

+ for(i = 0; i < n; i++) {

+         if(pthread_create(&tid, NULL, mt_lock_threads_exec, (void

*)(long)i)) {

+                 LM_ERR("failed to start all worker threads\n");

+                 goto error;

+         }

+ }

+

+ return 1;

+

+error:

+ return -1;

+}



 /* RPC exports: */





_______________________________________________

Kamailio - Development Mailing List -- 
sr-dev@lists.kamailio.org<mailto:sr-dev@lists.kamailio.org> To

unsubscribe send an email to 
sr-dev-le...@lists.kamailio.org<mailto:sr-dev-le...@lists.kamailio.org>

Important: keep the mailing list in the recipients, do not reply only to the

sender!

--

Daniel-Constantin Mierla (@ asipto.com)

twitter.com/miconda -- linkedin.com/in/miconda

Kamailio Consultancy, Training and Development Services -- asipto.com
_______________________________________________
Kamailio - Development Mailing List -- sr-dev@lists.kamailio.org
To unsubscribe send an email to sr-dev-le...@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the 
sender!

Reply via email to