lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1189454145.21778.48.camel@twins>
Date:	Mon, 10 Sep 2007 21:55:45 +0200
From:	Peter Zijlstra <a.p.zijlstra@...llo.nl>
To:	Christoph Lameter <clameter@....com>
Cc:	Daniel Phillips <phillips@...nq.net>, linux-mm@...ck.org,
	linux-kernel@...r.kernel.org, akpm@...ux-foundation.org,
	dkegel@...gle.com, David Miller <davem@...emloft.net>,
	Nick Piggin <npiggin@...e.de>
Subject: Re: [RFC 0/3] Recursive reclaim (on __PF_MEMALLOC)

On Mon, 2007-09-10 at 12:25 -0700, Christoph Lameter wrote:

> Of course boundless allocations from interrupt / reclaim context will 
> ultimately crash the system. To fix that you need to stop the networking 
> layer from performing these.

Trouble is, I don't only need a network layer to not endlessly consume
memory, I need it to 'fully' function so that we can receive the
writeout completion.

Let us define a strict meaning for a few phrases:

 use memory - an alloc / free cycle where the free is unconditional
 consume memory - an alloc / free cycle where the free is conditional
and or might be delayed for some unspecified time.

Currently networking has two states:

  1) it receives packets and consumes memory
  2) it doesn't receive any packets and doesn't use any memory.

In order to use swap over network you need to operate the network stack
in a bounded memory model (PF_MEMALLOC). So we need a state that:

  - receives packets
  - does NOT consume memory
  - but does use memory - albeit limited.

There are two ways to do this:

  - reserve a specified amount of memory per socket
    (allegedly IRIX has this)

or

  - have a global reserve and selectively serves sockets
    (what I've been doing)

These two models can be seen as the same. There is no fundamental
difference between having various small reserves and one larger that is
carved up using strict accounting.

So, if you will, you can view my approach as a reserve per socket, where
most sockets get a reserve of 0 and a few (those serving the VM) !0.

What part are you disagreeing with or unclear on?

Download attachment "signature.asc" of type "application/pgp-signature" (190 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ