Re: [PATCH v2 4/4] ipc: sem: do not hold ipc lock more than necessary

2013-03-20 Thread Rik van Riel
On 03/20/2013 10:27 AM, Rik van Riel wrote: On 03/05/2013 04:36 AM, Davidlohr Bueso wrote: @@ -1476,8 +1539,8 @@ SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsops, queue.sleeper = current; sleep_again: -current->state = TASK_INTERRUPTIBLE; sem_unlock(sma);

Re: [PATCH v2 4/4] ipc: sem: do not hold ipc lock more than necessary

2013-03-20 Thread Rik van Riel
On 03/05/2013 04:36 AM, Davidlohr Bueso wrote: @@ -1476,8 +1539,8 @@ SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsops, queue.sleeper = current; sleep_again: - current->state = TASK_INTERRUPTIBLE; sem_unlock(sma); + current->state = TASK_INTERR

Re: [PATCH v2 4/4] ipc: sem: do not hold ipc lock more than necessary

2013-03-05 Thread Rik van Riel
On 03/05/2013 04:36 AM, Davidlohr Bueso wrote: @@ -888,27 +924,34 @@ static int semctl_main(struct ipc_namespace *ns, int semid, int semnum, { struct sem_array *sma; struct sem* curr; - int err; + int err, nsems; ushort fast_sem_io[SEMMSL_FAST]; ush

[PATCH v2 4/4] ipc: sem: do not hold ipc lock more than necessary

2013-03-05 Thread Davidlohr Bueso
Instead of holding the ipc lock for permissions and security checks, among others, only acquire it when necessary. Some numbers 1) With Rik's semop-multi.c microbenchmark we can see the following results: Baseline (3.9-rc1): cpus 4, threads: 256, semaphores: 128, test duration: 30 secs total