On Tue, 2005-03-29 at 12:19, Dmitry Yusupov wrote:
> On Tue, 2005-03-29 at 17:20 +0200, Andi Kleen wrote:
> > > In your scenario, if we're out of memory and the system needs several
> > > ACK's to the swap device for pages to be released to the system, I don't
> > > see how we make forward progress since without a reserved resource to
> > > allocate from how does the ack make it up the stack to the storage
> > > driver layer?
> > Typically because the RX ring of the driver has some packets left.
> You can not be sure. Some NICs has very small number for possible HW
> ring buffers. Under OOM pressure, most likely, host will be so slow that
> resources might not just be returned back to the HW in time. Though it
> depends on link-layer driver implementation.
I didnt quiet follow the discussion - Let me see if i can phrase the
problem correctly (Trying to speak in general terms):
Sender is holding onto memory (retransmit queue i assume) waiting
for ACKs. Said sender is under OOM and therefore drops ACKs coming in
and as a result cant let go of these precious resource sitting on the
And iscsi cant wait long enough for someone else to release memory so
the ACKs can be delivered.
Did i capture this correctly?
If yes, the solution maybe to just drop all non-high-prio packets coming
in during the denial of service attack (for lack of better term). In
other words some strict prioritization scheduling (or rate control) at
the network level either in the NIC or ingress qdisc level.
On a slightly related topic: is SCSI (not iscsi) considered a reliable
If yes, why would you wanna run a reliable protocol inside another
reliable protocol (TCP)?