panic: kmem_map too small at heavy packet traffic

Tugrul Erdogan h.tugrul.erdogan at gmail.com
Thu Jul 25 14:57:47 UTC 2013


howdy all,

At my work, I am using 10.0-CURRENT on Intel(R) Xeon(R) E5620 with 16GB
ram. I am taking

"panic: kmem_malloc(-548663296): kmem_map too small: 539459584 total allocated"

message with configuration below:

[root@ ~]# sysctl vm.kmem_size_min vm.kmem_size_max vm.kmem_size
vm.kmem_size_scale
vm.kmem_size_min: 0
vm.kmem_size_max: 329853485875
vm.kmem_size: 16686845952
vm.kmem_size_scale: 1
[root@ ~]# sysctl hw.physmem hw.usermem hw.realmem
hw.physmem: 17151787008
hw.usermem: 8282652672
hw.realmem: 18253611008
[root@ ~]# sysctl hw.pagesize hw.pagesizes hw.availpages
hw.pagesize: 4096
hw.pagesizes: 4096 2097152 0
hw.availpages: 4187448


When I compare vmstat and netstat output of boot time result and
subsequent result, the major difference are seemed at:

pf_temp 0 0K - 79309736 128 | pf_temp 1077640 134705K - 84330076 128

and after the panic at the core dump file the major vmstat difference is:

temp 110 15K - 76212305 16,32,64,128,256 | temp 117 6742215K - 655115
16,32,64,128,2

When I explore the source code of kernel (at vm_kern.c and vm_map.c), I see
that the panic can occur with the cases at below:

* negative malloc size parameter

* longer than free buffer respect to kmem_map min_offset and max_offset
values

* try to allocate when the root entry of map is the rightmost entry of map

* try to allocate bigger than map's max_free value

I think the panic occurs at mbuf creation process when calling malloc() as
a result of couldn't be able to allocate memory; but I don't understand why
one of this panic case activating? The memory is almost empty but the
device is saying kmem_map small when using about 0.5GB memory purely. How
can i solve this panic problem?

Thank you all for your time.

-- Best Wishes,

Tugrul Erdogan


More information about the freebsd-hackers mailing list