#7976: Improve memory exhaustion process ---------------------------+------------------------------ Reporter: kallisti5 | Owner: axeld Type: enhancement | Status: new Priority: normal | Milestone: R1 Component: System/Kernel | Version: R1/Development Keywords: | Blocked By: Blocking: | Has a Patch: 0 Platform: All | ---------------------------+------------------------------ This may be invalid, if so feel free to mark it as such. During a critical physical memory exhaustion, it looks as though we don't take any steps to mitigate the situation such as killing top memory consumers etc. While the argument that killing processes may lose data may exist... if the system is seconds away from crashing then killing one top consumer may be better then losing everything. Here is an example of everything running a-muck in VirtualBox when 512 MB memory is fully consumed momentarily... {{{ KERN: slab memory manager: created area 0x8a801000 (4927) KERN: slab memory manager: created area 0x8b001000 (4938) KERN: low resource memory: normal -> note KERN: low resource memory: note -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> note KERN: low resource memory: note -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> note KERN: low resource memory: note -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: 0x840157b0->VMAnonymousCache::_Commit(423034880): Failed to reserve 131072 bytes of RAM KERN: vm_soft_fault: va 0x0 not covered by area in address space KERN: vm_page_fault: vm_soft_fault returned error 'Bad address' on fault at 0x4, ip 0x20c325, write 1, user 1, thread 0x101 KERN: vm_page_fault: thread "jam" (257) in team "jam" (257) tried to write address 0x4, ip 0x20c325 ("jam_seg0ro" +0xc325) KERN: low resource memory: critical -> warning KERN: debug_server: Thread 257 entered the debugger: Segment violation KERN: low resource memory: warning -> critical KERN: 0x80fe75b0->VMAnonymousCache::_Commit(122880): Failed to reserve 122880 bytes of RAM KERN: 0x80fe75b0->VMAnonymousCache::_Commit(98304): Failed to reserve 98304 bytes of RAM KERN: 0x838ca008->VMAnonymousCache::_Commit(393216): Failed to reserve 131072 bytes of RAM KERN: vm_soft_fault: va 0x2000 not covered by area in address space KERN: vm_page_fault: vm_soft_fault returned error 'Bad address' on fault at 0x2000, ip 0x2b0fee, write 1, user 1, thread 0x119 KERN: vm_page_fault: thread "team 257 handler" (281) in team "debug_server" (62) tried to write address 0x2000, ip 0x2b0fee ("libroot.so_seg0ro" +0xa7fee) KERN: 0x80fe75b0->VMAnonymousCache::Fault(): Failed to reserve 4096 bytes of RAM. KERN: vm_page_fault: vm_soft_fault returned error 'Out of memory' on fault at 0x700c0f54, ip 0x278a9d, write 1, user 1, thread 0x11b KERN: vm_page_fault: thread "team 62 handler" (283) in team "debug_server" (62) tried to write address 0x700c0f54, ip 0x278a9d ("libroot.so_seg0ro" +0x6fa9d) KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: 0x840097a8->VMAnonymousCache::_Commit(2752512): Failed to reserve 131072 bytes of RAM KERN: vm_soft_fault: va 0x2000 not covered by area in address space KERN: vm_page_fault: vm_soft_fault returned error 'Bad address' on fault at 0x2000, ip 0x805fee, write 1, user 1, thread 0xe5 KERN: vm_page_fault: thread "w>Terminal 1: haiku: jam" (229) in team "Terminal" (221) tried to write address 0x2000, ip 0x805fee ("libroot.so_seg0ro" +0xa7fee) KERN: vm_soft_fault: va 0x4000 not covered by area in address space KERN: vm_page_fault: vm_soft_fault returned error 'Bad address' on fault at 0x4000, ip 0x2b0fee, write 1, user 1, thread 0x44 KERN: vm_page_fault: thread "kernel listener" (68) in team "debug_server" (62) tried to write address 0x4000, ip 0x2b0fee ("libroot.so_seg0ro" +0xa7fee) KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: 0x83c4c6e8->VMAnonymousCache::_Commit(28672): Failed to reserve 28672 bytes of RAM KERN: runtime_loader: /boot/system/lib/libroot.so: Could not map image: Out of memory KERN: low resource memory: critical -> warning KERN: 0x83c25dc0->VMAnonymousCache::_Commit(28672): Failed to reserve 28672 bytes of RAM KERN: runtime_loader: /boot/system/lib/libroot.so: Could not map image: Out of memory KERN: low resource memory: warning -> critical KERN: 0x83d19850->VMAnonymousCache::_Commit(65536): Failed to reserve 65536 bytes of RAM KERN: 0x83d19350->VMAnonymousCache::_Commit(65536): Failed to reserve 65536 bytes of RAM KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: 0x83d19850->VMAnonymousCache::Fault(): Failed to reserve 4096 bytes of RAM. KERN: vm_page_fault: vm_soft_fault returned error 'Out of memory' on fault at 0x780324c4, ip 0x631ec8, write 1, user 1, thread 0x13c KERN: vm_page_fault: thread "w>TrackerWindow" (316) in team "Tracker" (115) tried to write address 0x780324c4, ip 0x631ec8 ("libroot.so_seg0ro" +0x2cec8) KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: low resource memory: warning -> critical KERN: low resource memory: critical -> warning KERN: 0x83d197b0->VMAnonymousCache::_Commit(8192): Failed to reserve 8192 bytes of RAM Last message repeated 1 time KERN: low resource memory: warning -> normal }}} At this point the system was unable to launch any further applications. (see screenshot attached) -- Ticket URL: <http://dev.haiku-os.org/ticket/7976> Haiku <http://dev.haiku-os.org> Haiku - the operating system.