Bug 12697

Summary: Out of swap handling [PATCH]
Product: Base System Reporter: Peter Holm <peter>
Component: kernAssignee: freebsd-bugs (Nobody) <bugs>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Unspecified   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
patch none

Description Peter Holm 1999-07-18 20:30:00 UTC
I have tested out of swap handling in current. The situation is that
the system just lockes up, "looping" in vm_pageout_scan.

I have experimented with some modifications to vm_pageout.c that seems
to improve the chances for a recovery drastically.
All tests were done on my 128Mb RAM / 256 Mb swap box.

The changes consists of:
*       Killing all running user processes when less than 1024 pages
swap left.
*       Sleeping after each kill to allow the user process to run.
*       Pausing the  vmdaemon when in kill mode.

I have tried different strategies for when to stop killing but only this
one seems to guaranty recovery.
Comment 1 tim 2000-05-16 18:29:02 UTC
>                           Problem Report kern/12697
>                                       
>   Out of swap handling [PATCH]
[...]          
>I have tested out of swap handling in current. The situation is that
>the system just lockes up, "looping" in vm_pageout_scan.
>
>I have experimented with some modifications to vm_pageout.c that seems
>to improve the chances for a recovery drastically.
>All tests were done on my 128Mb RAM / 256 Mb swap box.

Can you submit a plaintext patch and propose your changes to
freebsd-arch@FreeBSD.org.  You will need to write a message
outlining how these changes will improve out-of-swap handling for
out-of-swap due to different typical reasons in different scenarios
(I'm thinking of cases where one or two new processes have just
runaway, but a bigger process may be at constant state and more
important, or cases where the shear number of processes has caused
the problem).  You should also give some information about what
testing you have done.

You may wish to keep freebsd-gnats-submit@FreeBSD.org in the Cc: with
a subject of "Re: kern12697 ...".

Thanks,


>The changes consists of:
>*       Killing all running user processes when less than 1024 pages
>swap left.
>*       Sleeping after each kill to allow the user process to run.
>*       Pausing the  vmdaemon when in kill mode.
>
>I have tried different strategies for when to stop killing but only this
>one seems to guaranty recovery.
>
>
>   Fix
>          
>begin 644 patch
>M*BHJ('-Y<R]V;2]V;5]P86=E;W5T+F-^"5-U;B!*=6P@(#0@,3,Z-3,Z-#D@
>M,3DY.0HM+2T@<WES+W9M+W9M7W!A9V5O=70N8PE3870@2G5L(#$W(#$S.C4Q
>M.C,Y(#$Y.3D**BHJ*BHJ*BHJ*BHJ*BHJ"BHJ*B`Q-30L,34Y("HJ*BH*+2TM
>M(#$U-"PQ-C(@+2TM+0H@('-T871I8R!I;G0@=FU?<W=A<%]I9&QE7V5N86)L
>M960],#L*("`C96YD:68*("`**R!S=&%T:6,@:6YT(&MI;&Q?;6]D92`](#`[
>M"BL@<W1A=&EC('!I9%]T(&QA<W1?:VEL;&5D7W!I9"`](#`["BL@"B`@4UE3
>M0U1,7TE.5"A?=FTL(%9-7U!!1T5/551?04Q'3U))5$A-+"!P86=E;W5T7V%L
>M9V]R:71H;2P*("`)0U1,1DQ!1U]25RP@)G9M7W!A9V5O=71?86QG;W)I=&AM
>M7VQR=2P@,"P@(DQ252!P86=E(&UG;70B*3L*("`**BHJ*BHJ*BHJ*BHJ*BHJ
>M"BHJ*B`R,#0L,C`Y("HJ*BH*+2TM(#(P-RPR,3,@+2TM+0H@("-E;F1I9@H@
>M('-T871I8R!V;VED('9M7W!A9V5O=71?<&%G95]S=&%T<RAV;VED*3L*("`*
>M*R`*("`O*@H@("`J('9M7W!A9V5O=71?8VQE86XZ"B`@("H**BHJ*BHJ*BHJ
>M*BHJ*BHJ"BHJ*B`Q,3(V+#$Q-S4@*BHJ*@H@(`E]"B`@"B`@"2\J"B$@"2`J
>M(&UA:V4@<W5R92!T:&%T('=E(&AA=F4@<W=A<"!S<&%C92`M+2!I9B!W92!A
>M<F4@;&]W(&]N(&UE;6]R>2!A;F0*("`)("H@<W=A<"`M+2!T:&5N(&MI;&P@
>M=&AE(&)I9V=E<W0@<')O8V5S<RX*("`)("HO"B$@"6EF("@H=FU?<W=A<%]S
>M:7IE(#T](#`@?'P@<W=A<%]P86=E<E]F=6QL*2`F)@HA(`D@("`@*"AC;G0N
>M=E]F<F5E7V-O=6YT("L@8VYT+G9?8V%C:&5?8V]U;G0I(#P@8VYT+G9?9G)E
>M95]M:6XI*2!["B$@"0EB:6=P<F]C(#T@3E5,3#L*(2`)"6)I9W-I>F4@/2`P
>M.PHA(`D)9F]R("AP(#T@86QL<')O8RYL:%]F:7)S=#L@<"`A/2`P.R!P(#T@
>M<"T^<%]L:7-T+FQE7VYE>'0I('L*(2`)"0DO*@HA(`D)"2`J(&EF('1H:7,@
>M:7,@82!S>7-T96T@<')O8V5S<RP@<VMI<"!I=`HA(`D)"2`J+PHA(`D)"6EF
>M("@H<"T^<%]F;&%G("8@4%]365-414TI('Q\("AP+3YP7VQO8VL@/B`P*2!\
>M?`HA(`D)"2`@("`H<"T^<%]P:60@/3T@,2D@?'P*(2`)"0D@("`@*"AP+3YP
>M7W!I9"`\(#0X*2`F)B`H=FU?<W=A<%]S:7IE("$](#`I*2D@>PHA(`D)"0EC
>M;VYT:6YU93L*(2`)"0E]"B$@"0D)+RH*(2`)"0D@*B!I9B!T:&4@<')O8V5S
>M<R!I<R!I;B!A(&YO;BUR=6YN:6YG('1Y<&4@<W1A=&4L"B$@"0D)("H@9&]N
>M)W0@=&]U8V@@:70N"B$@"0D)("HO"B$@"0D):68@*'`M/G!?<W1A="`A/2!3
>M4E5.("8F('`M/G!?<W1A="`A/2!34TQ%15`I('L*(2`)"0D)8V]N=&EN=64[
>M"B`@"0D)?0HA(`D)"2\J"B$@"0D)("H@9V5T('1H92!P<F]C97-S('-I>F4*
>M(2`)"0D@*B\*(2`)"0ES:7IE(#T@=FUS<&%C95]R97-I9&5N=%]C;W5N="AP
>M+3YP7W9M<W!A8V4I.PHA(`D)"2\J"B$@"0D)("H@:68@=&AE('1H:7,@<')O
>M8V5S<R!I<R!B:6=G97(@=&AA;B!T:&4@8FEG9V5S="!O;F4*(2`)"0D@*B!R
>M96UE;6)E<B!I="X*(2`)"0D@*B\*(2`)"0EI9B`H<VEZ92`^(&)I9W-I>F4I
>M('L*(2`)"0D)8FEG<')O8R`]('`["B$@"0D)"6)I9W-I>F4@/2!S:7IE.PH@
>M(`D)"7T*(2`)"7T*(2`)"6EF("AB:6=P<F]C("$]($Y53$PI('L*(2`)"0EK
>M:6QL<')O8RAB:6=P<F]C+"`B;W5T(&]F('-W87`@<W!A8V4B*3L*(2`)"0EB
>M:6=P<F]C+3YP7V5S=&-P=2`](#`["B$@"0D)8FEG<')O8RT^<%]N:6-E(#T@
>M4%))3U]-24X["B$@"0D)<F5S971P<FEO<FET>2AB:6=P<F]C*3L*(2`)"0EW
>M86ME=7`H)F-N="YV7V9R965?8V]U;G0I.PHA(`D)?0HA(`E]"B`@"7)E='5R
>M;B!F;W)C95]W86ME=7`["B`@?0H@(`HM+2T@,3$S,"PQ,3DV("TM+2T*("`)
>M?0H@(`H@(`DO*@HA(`D@*B!M86ME('-U<F4@=&AA="!W92!H879E('-W87`@
>M<W!A8V4@+2T@:68@=V4@87)E(&QO=R!O;@H@(`D@*B!S=V%P("TM('1H96X@
>M:VEL;"!T:&4@8FEG9V5S="!P<F]C97-S+@H@(`D@*B\*(2`C:69D968@3D]?
>M4U=!4%!)3D<*(2`):68@*&MI;&Q?;6]D92D*(2`)"6MI;&Q?;6]D92`]("@H
>M8VYT+G9?9G)E95]C;W5N="`K(&-N="YV7V-A8VAE7V-O=6YT*2`\"B$@"0D)
>M"3,J8VYT+G9?9G)E95]M:6XI.PHA(`EE;'-E"B$@"0EK:6QL7VUO9&4@/2`H
>M*&-N="YV7V9R965?8V]U;G0@*R!C;G0N=E]C86-H95]C;W5N="D@/`HA(`D)
>M"0EC;G0N=E]F<F5E7VUI;BD["B$@(V5L<V4*(2`):68@*&MI;&Q?;6]D92D*
>M(2`)"6MI;&Q?;6]D92`]("AV;5]S=V%P7W-I>F4@/"`S,#<R*3L*(2`)96QS
>M90HA(`D):VEL;%]M;V1E(#T@*'9M7W-W87!?<VEZ92`\(#$P,C0I.PHA("-E
>M;F1I9@HA(`D)"B$@"6EF("AK:6QL7VUO9&4I('L@+RH@2VEL;"!A;&P@<G5N
>M;FEN9R!U<V5R('!R;V-S+"!B:6=G97-T(&9I<G-T("HO"B$@"0ED;R!["B$@
>M"0D)8FEG<')O8R`]($Y53$P["B$@"0D)8FEG<VEZ92`](#`["B$@"0D)9F]R
>M("AP(#T@86QL<')O8RYL:%]F:7)S=#L@<"`A/2`P.R!P(#T@<"T^<%]L:7-T
>M+FQE7VYE>'0I('L*(2`)"0D)+RH*(2`)"0D)("H@:68@=&AI<R!I<R!A('-Y
>M<W1E;2!P<F]C97-S+"!S:VEP(&ET"B$@"0D)"2`J+PHA(`D)"0EI9B`H*'`M
>M/G!?9FQA9R`F(%!?4UE35$5-*2!\?"`H<"T^<%]L;V-K(#X@,"D@?'P*(2`)
>M"0D)("`@("AP+3YP7W!I9"`]/2`Q*2!\?`HA(`D)"0D@("`@*"AP+3YP7W!I
>M9"`\(#0X*2`F)B`H=FU?<W=A<%]S:7IE("$](#`I*2D@>PHA(`D)"0D)8V]N
>M=&EN=64["B$@"0D)"7T*(2`)"0D)+RH*(2`)"0D)("H@:68@=&AE('!R;V-E
>M<W,@:7,@:6X@82!N;VXM<G5N;FEN9R!T>7!E('-T871E+`HA(`D)"0D@*B!D
>M;VXG="!T;W5C:"!I="X*(2`)"0D)("HO"B$@"0D)"6EF("AP+3YP7W-T870@
>M(3T@4U)53BD@8V]N=&EN=64["B$@"0D)"6EF("AP+3YP7W-I9VQI<W0@)B`H
>M4TE'2TE,3"!\(%!?5T58250I*2!C;VYT:6YU93L*(2`)"0D):68@*'`M/G!?
>M8W)E9"T^<%]R=6ED(#P@,BD@8V]N=&EN=64["B$@"0D)"6EF("AP+3YP7W!I
>M9"`]/2!L87-T7VMI;&QE9%]P:60I(&-O;G1I;G5E.PHA(`D)"0DO*@HA(`D)
>M"0D@*B!G970@=&AE('!R;V-E<W,@<VEZ90HA(`D)"0D@*B\*(2`)"0D)<VEZ
>M92`]('9M<W!A8V5?<F5S:61E;G1?8V]U;G0H<"T^<%]V;7-P86-E*3L*(2`)
>M"0D)+RH*(2`)"0D)("H@:68@=&AE('1H:7,@<')O8V5S<R!I<R!B:6=G97(@
>M=&AA;B!T:&4@8FEG9V5S="!O;F4*(2`)"0D)("H@<F5M96UB97(@:70N"B$@
>M"0D)"2`J+PHA(`D)"0EI9B`H<VEZ92`^(&)I9W-I>F4I('L*(2`)"0D)"6)I
>M9W!R;V,@/2!P.PHA(`D)"0D)8FEG<VEZ92`]('-I>F4["B$@"0D)"7T*("`)
>M"0E]"B$@"0D):68@*&)I9W!R;V,@(3T@3E5,3"D@>PHA(`D)"0EK:6QL<')O
>M8RAB:6=P<F]C+"`B;W5T(&]F('-W87`@<W!A8V4B*3L*(2`)"0D);&%S=%]K
>M:6QL961?<&ED(#T@8FEG<')O8RT^<%]P:60["B$@"0D)"7,@/2!S<&QV;2@I
>M.PHA(`D)"0ET<VQE97`H)G9M7W!A9V5S7VYE961E9"P@4%9-+"`B<'-L965P
>M(BP@:'HO,S`I.PHA(`D)"0ES<&QX*',I.PH@(`D)"7T*(2`)"7T@=VAI;&4@
>M*&)I9W!R;V,I.PHA(`E]("\J(&MI;&P@;6]D92`J+PHA(`EW86ME=7`H)F-N
>M="YV7V9R965?8V]U;G0I.PH@(`ER971U<FX@9F]R8V5?=V%K975P.PH@('T*
>M("`**BHJ*BHJ*BHJ*BHJ*BHJ"BHJ*B`Q-#`T+#$T,3$@*BHJ*@HM+2T@,30R
>M-2PQ-#,Y("TM+2T*("!V;5]D865M;VXH*0H@('L*("`)<W1R=6-T('!R;V,@
>M*G`["BL@"6EN="!S.PH@(`H@(`EW:&EL92`H5%)512D@>PHK(`D):68@*&MI
>M;&Q?;6]D92D@>PHK("`@("`@("`@("`@("`@("`@("`@("`@("\J($=I=F4@
>M:VEL;&5D('5S97(@<')O8W,@82!C:&%N8V4@=&\@9&EE("HO"BL@"0D)<R`]
>M('-P;'9M*"D["BL@"0D)='-L965P*"9V;5]P86=E<U]N965D960L(%!632P@
>M(G!S;&5E<"(L(&AZ*3L**R`)"0ES<&QX*',I.PHK(`D)?0H@(`D)='-L965P
>M*"9V;5]D865M;VY?;F5E9&5D+"!04$%54T4L(")P<VQE97`B+"`P*3L*("`)
>M"6EF("AV;5]P86=E;W5T7W)E<5]S=V%P;W5T*2!["B`@"0D)<W=A<&]U=%]P
>M<F]C<RAV;5]P86=E;W5T7W)E<5]S=V%P;W5T*3L**BHJ('-Y<R]V;2]S=V%P
>M7W!A9V5R+F-^"51U92!*=6X@,CD@,C$Z-#4Z,S$@,3DY.0HM+2T@<WES+W9M
>M+W-W87!?<&%G97(N8PE&<FD@2G5L(#$V(#$W.C0Y.C0U(#$Y.3D**BHJ*BHJ
>M*BHJ*BHJ*BHJ"BHJ*B`R,30L,C(P("HJ*BH*+2TM(#(Q-"PR,C(@+2TM+0H@
>M('L*("`):68@*'9M7W-W87!?<VEZ92`\(&YS=V%P7VQO=V%T*2!["B`@"0EI
>M9B`H<W=A<%]P86=E<E]A;&UO<W1?9G5L;"`]/2`P*2!["BL@(VEF9&5F($1)
>M4T=.3U-424,*("`)"0EP<FEN=&8H(G-W87!?<&%G97(Z(&]U="!O9B!S=V%P
>M('-P86-E7&XB*3L**R`C96YD:68*("`)"0ES=V%P7W!A9V5R7V%L;6]S=%]F
>M=6QL(#T@,3L*("`)"7T*("`)?2!E;'-E('L**BHJ*BHJ*BHJ*BHJ*BHJ"BHJ
>M*B`T-S`L-#<V("HJ*BH*+2TM(#0W,BPT.#`@+2TM+0H@(`H@(`EI9B`H*&)L
>M:R`](&)L:7-T7V%L;&]C*'-W87!B;&ES="P@;G!A9V5S*2D@/3T@4U=!4$),
>M2U].3TY%*2!["B`@"0EI9B`H<W=A<%]P86=E<E]F=6QL("$](#(I('L**R`C
>M:69D968@1$E!1TY/4U1)0PH@(`D)"7!R:6YT9B@B<W=A<%]P86=E<E]G971S
>M=V%P<W!A8V4Z(&9A:6QE9%QN(BD["BL@(V5N9&EF"B`@"0D)<W=A<%]P86=E
>M<E]F=6QL(#T@,CL*("`)"0ES=V%P7W!A9V5R7V%L;6]S=%]F=6QL(#T@,3L*
>&("`)"7T*
>`
>end
>
Comment 2 dd freebsd_committer freebsd_triage 2001-07-22 16:05:46 UTC
State Changed
From-To: open->closed

overtaken by events (this code has been reworked a little), and no visible 
response to send this to -arch from submitter