Oops when trying to create more than 16000 timers

Ottavio Campana
2008-12-15T16:39:18Z

Hello,

I'm sorry if it is not the best place to ask, but I haven't find any answer.

I am currently developing a software that needs approx 60k timers. I
currently use timer_create and all the relative functions to manage timers.

I've noticed that after having created 16039 timers I always get an oops
from the kernel, which are always of the same kind:

Dec 15 15:20:00 evolution kernel: [601680.417064] BUG: unable to handle
kernel NULL pointer dereference at 0000000000000040 .

I tried looking at kernel/posix-timers.c and I discovered that posix
timers are kept in slab memory. By monitoring the my program I can see
that in /proc/slabinfo the number of timers increases till 16039, when I
get the oops and no more timers are created.

In /prob/slabinfo I have
posix_timers_cache 0 0 192 20 1 : tunables 120 60 8 : slabdata 0 0 0

If I try to increase tunables to 2400 120 16 the maximum number of posix
timers that I can create does not change.

How can I tune the kernel so that it supports 60k or more timers?

Thank for your help,

Ottavio

--
Ottavio Campana
Telecommunication Engineer

Lab. Immagini
Dept. of Information Engineering
University of Padova

Via Gradenigo 6/B
35131 Padova
Italy

phone: +39 049 8277641 fax: +39 049 8277699
e-mail: ottavio.campana@dei.unipd.it