Dnia środa, 5 stycznia 2011 o 20:14:00 Dimitar Zhekov napisał(a): > On Wed, 5 Jan 2011 11:08:18 +1100 > Lex Trotman <[email protected]> wrote: > > > And on modern kernels virtual memory can be overcommitted > > significantly so it may not work > > I haven't said that a successful alloc guarantees everything will be > fine. :) But with the kernel defaults, you'll at least catch the most > obvious cases. > > > is expensive since the page tables have to be constructed even if > > the memory is not used. > > CPU cost: that's only once per file, memory cost: < 1% > > > Also this could cause fragmentation of the virtual address space that > > may limit how many times it will work. > > Yes, or some other problems. It's a hack, and should only be used if > we can't agree on anything better. Personally I'm for a preference. > > --- > > On Tue, 4 Jan 2011 22:05:52 +0100 > Krzysztof Żelechowski <[email protected]> wrote: > > > > > I do not know where you got it from, but the last OS I know that > > > > behaved like that was MacOS 7. [cut] > > > > > > Like what?.. > > > > Like necessarily allocating a contiguous block of physical memory. > > What a strange idea... Unless your CPU lacks MMU, of course. > > > GNU malloc uses mmap so it is all virtual. > > mmap for large blocks and heap for small blocks IIRC, and naturally, the > heap itself is mmap-ed. > > > > If by "01 << 040" you mean 4GB, how much real and virtual memory do > > > you have? > > > > > > > > > > I have 1 GB of physical memory. (01 << 040) is the first integer that does > > not fit into unsigned int. > > So then, using more than 4GB _will_ be a problem on your system, QED. > I pointed out it's a rough check. > > But if your malloc() fails on 4GB, and not below that, you either have > an unusually large swap file, or your kernel is set to always
procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 324092 35424 17904 283900 7 38 191 77 479 810 16 5 76 3 0 MemTotal: 1004948 kB SwapTotal: 1510040 kB VmallocTotal: 34359738367 kB VmallocChunk: 34359546964 kB Filename Type Size Used Priority /dev/sda5 partition 1510040 276772 -1 > overcommit. With the defaults, the check works much better. overcommit_memory = 0 overcommit_ratio = 50 CommitLimit: 2012512 kB vmalloc is not set in /proc/cmdline. I think this setup is quite typical. Chris _______________________________________________ Geany mailing list [email protected] http://lists.uvena.de/cgi-bin/mailman/listinfo/geany
