Hi !
I have a machine with 32 Gb memory:
]$ cat /proc/meminfo
MemTotal: 32941336 kB
MemFree: 32738196 kB
Buffers: 372 kB
Cached: 34852 kB
SwapCached: 140 kB
Active: 21748 kB
Inactive: 25392 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 32941336 kB
LowFree: 32738196 kB
SwapTotal: 2104472 kB
SwapFree: 2102356 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 11856 kB
Mapped: 5056 kB
Slab: 40972 kB
PageTables: 1252 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 48222340 kB
Committed_AS: 22912 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 273932 kB
VmallocChunk: 34359464395 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
and I would like to allocate and fill a hashtable with 90 mln elements.
My program is
<>
using System;
using System.Collections;
public class HashTest {
public static void Main (String[] args ) {
int N = Convert.ToInt32 ( args [ 0 ] );
Console.WriteLine ( "N = " + N );
Hashtable hash = new Hashtable ( N );
int n = 1;
for ( int i = 0; i < N; i++ ) {
if ( i % 1000000 == 0 ) {
long m = GC.GetTotalMemory(false);
Console.WriteLine ( "i = " + i + " Total memory = " + m );
GC.Collect();
GC.WaitForPendingFinalizers();
}
hash.Add ( i, n );
}
}
}
But I got
]$ mono HashTest.exe 90000000
N = 90000000
i = 0 Total memory = 2400268288
i = 1000000 Total memory = 2448453632
i = 2000000 Total memory = 2496643072
. . .
i = 87000000 Total memory = 6592643072
i = 88000000 Total memory = 6640832512
Too many heap sections: Increase MAXHINCR or MAX_HEAP_SECTS
Stacktrace:
at (wrapper managed-to-native)
object.__icall_wrapper_mono_object_new_specific (intptr) <0x00049>
at (wrapper managed-to-native)
object.__icall_wrapper_mono_object_new_specific (intptr) <0x00049>
at (wrapper alloc) object.Alloc (intptr) <0x0006f>
at HashTest.Main (string[]) <0x0026e>
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object
(object,intptr,intptr,intptr) <0x0007b>
Native stacktrace:
mono [0x491a17]
/lib64/libpthread.so.0 [0x2b8c6e821b00]
/lib64/libc.so.6(gsignal+0x35) [0x2b8c6ea5d665]
/lib64/libc.so.6(abort+0x110) [0x2b8c6ea5eae0]
mono [0x5db470]
mono [0x5d14e9]
mono [0x5d192c]
mono [0x5d1b19]
mono [0x5d1cd4]
mono [0x5d536e]
mono [0x5d6520]
mono [0x5e05b9]
mono [0x556565]
mono(mono_object_new_alloc_specific+0x65) [0x556675]
mono(mono_object_new_specific+0x88) [0x556da8]
[0x7efa54fa]
Debug info from gdb:
Using host libthread_db library "/lib64/libthread_db.so.1".
[Thread debugging using libthread_db enabled]
[New Thread 47882154975808 (LWP 9662)]
[New Thread 1076734272 (LWP 9670)]
[New Thread 46915117578560 (LWP 9669)]
[New Thread 46914593286464 (LWP 9668)]
[New Thread 46914068994368 (LWP 9667)]
[New Thread 46913544702272 (LWP 9666)]
[New Thread 46913020410176 (LWP 9665)]
[New Thread 2130254144 (LWP 9664)]
[New Thread 1605962048 (LWP 9663)]
0x00002b8c6e82091b in read () from /lib64/libpthread.so.0
9 Thread 1605962048 (LWP 9663) 0x00002b8c6e81e286 in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
8 Thread 2130254144 (LWP 9664) 0x00002b8c6e81e286 in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
7 Thread 46913020410176 (LWP 9665) 0x00002b8c6e81e286 in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
6 Thread 46913544702272 (LWP 9666) 0x00002b8c6e81e286 in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
5 Thread 46914068994368 (LWP 9667) 0x00002b8c6e81e286 in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
4 Thread 46914593286464 (LWP 9668) 0x00002b8c6e81e286 in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
3 Thread 46915117578560 (LWP 9669) 0x00002b8c6e81e286 in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
2 Thread 1076734272 (LWP 9670) 0x00002b8c6e81fdcd in sem_wait ()
from /lib64/libpthread.so.0
1 Thread 47882154975808 (LWP 9662) 0x00002b8c6e82091b in read ()
from /lib64/libpthread.so.0
Thread 9 (Thread 1605962048 (LWP 9663)):
#0 0x00002b8c6e81e286 in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib64/libpthread.so.0
#1 0x00000000005e1c44 in GC_wait_marker () at pthread_support.c:1788
#2 0x00000000005d878e in GC_help_marker (my_mark_no=92) at mark.c:1116
#3 0x00000000005e08d9 in GC_mark_thread (id=0x0) at pthread_support.c:548
#4 0x00002b8c6e819fb7 in start_thread () from /lib64/libpthread.so.0
#5 0x00002b8c6eaea78d in clone () from /lib64/libc.so.6
. . .
Thread 1 (Thread 47882154975808 (LWP 9662)):
#0 0x00002b8c6e82091b in read () from /lib64/libpthread.so.0
#1 0x0000000000491b1b in mono_handle_native_sigsegv (signal=<value
optimized out>, ctx=<value optimized out>)
at /usr/include/bits/unistd.h:35
#2 <signal handler called>
#3 0x00002b8c6ea5d665 in raise () from /lib64/libc.so.6
#4 0x00002b8c6ea5eae0 in abort () from /lib64/libc.so.6
#5 0x00000000005db470 in GC_abort (msg=0x6a1700 "Too many heap
sections: Increase MAXHINCR or MAX_HEAP_SECTS")
at misc.c:1099
#6 0x00000000005d14e9 in GC_add_to_heap (p=0x2aacdb64f000,
bytes=8388608) at alloc.c:840
#7 0x00000000005d192c in GC_expand_hp_inner (n=2048) at alloc.c:994
#8 0x00000000005d1b19 in GC_collect_or_expand (needed_blocks=1,
ignore_off_page=0) at alloc.c:1070
#9 0x00000000005d1cd4 in GC_allocobj (sz=3, kind=0) at alloc.c:1125
#10 0x00000000005d536e in GC_generic_malloc_inner (lb=24, k=0) at
malloc.c:136
#11 0x00000000005d6520 in GC_generic_malloc_many (lb=24, k=0,
result=0x8e1eb8) at mallocx.c:513
#12 0x00000000005e05b9 in GC_local_malloc_atomic (bytes=20) at
pthread_support.c:391
#13 0x0000000000556565 in mono_object_new_ptrfree (vtable=0x1d9a8318)
at object.c:4232
#14 0x0000000000556675 in mono_object_new_alloc_specific
(vtable=0x1d9a8318) at object.c:4205
#15 0x0000000000556da8 in mono_object_new_specific (vtable=0x1d9a8318)
at object.c:4196
#16 0x000000007efa54fa in ?? ()
#17 0x000000001d962e90 in ?? ()
#18 0x0000000000000000 in ?? ()
#0 0x00002b8c6e82091b in read () from /lib64/libpthread.so.0
=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
Aborted
Any suggestions, please ?
Mono version:
mono -V
Mono JIT compiler version 2.8.1 (tarball Thu Dec 2 14:44:51 MSK 2010)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: debugger softdebug
LLVM: supported, not enabled.
GC: Included Boehm (with typed GC and Parallel Mark)
Linux kernel :
Linux node 2.6.18-rhel-alt13.M41.3 #1 SMP Tue Feb 2 12:09:59 MSK 2010
x86_64 GNU/Linux
Regards,
Yury.
_______________________________________________
Mono-list maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list