Hi Marcus,

Did you take a look at http://www.zlib.net/pigz/ ?
I did the same idea of your patch here, but I exchanged gzip for pigz
because it showed a good performance improvement.

Regards,

Lucas de Souza Santos (ldss)


On Fri, Sep 17, 2010 at 7:16 AM, Marcus Granado
<[email protected]>wrote:

>  stdext/gzip.ml |  21 +++++++++++++++++++--
>  1 files changed, 19 insertions(+), 2 deletions(-)
>
>
> # HG changeset patch
> # User Marcus Granado <[email protected]>
> # Date 1284397485 -3600
> # Node ID 2095ed131b6343e0a08406246705e793aecd5ee7
> # Parent  164f63521e8262f541059a13a7f1d4d5f5ed7f2b
> CA-45104: renice gzip so that it is nice to the other dom0 processes
>
> Signed-off-by: Marcus Granado <[email protected]>
>
> diff -r 164f63521e82 -r 2095ed131b63 stdext/gzip.ml
> --- a/stdext/gzip.ml
> +++ b/stdext/gzip.ml
> @@ -28,6 +28,20 @@
>   | Active  (** we provide a function which writes into the compressor and
> a fd output *)
>   | Passive (** we provide an fd input and a function which reads from the
> compressor *)
>
> +(* renice/ionice the pid with lowest priority so that it doesn't *)
> +(* use up all cpu resources in dom0 *)
> +let lower_priority pid =
> +  let pid=Printf.sprintf "%d" (Forkhelpers.getpid pid) in
> +  (* renice 19 -p pid *)
> +  let renice="/usr/bin/renice" in
> +  let renice_args = ["19";"-p";pid] in
> +  let _=Forkhelpers.execute_command_get_output renice renice_args in
> +  (* ionice -c 3 [idle] -p pid *)
> +  let ionice="/usr/bin/ionice" in
> +  let ionice_args = ["-c";"3";"-p";pid] in
> +  let _=Forkhelpers.execute_command_get_output ionice ionice_args in
> +  ()
> +
>  (** Runs a zcat process which is either:
>     i) a compressor; or (ii) a decompressor
>     and which has either
> @@ -57,8 +71,11 @@
>               zcat_out in                                 (* close this
> before waitpid *)
>         let pid = Forkhelpers.safe_close_and_exec stdin stdout None [] gzip
> args in
>         close close_now;
> -        finally
> -          (fun () -> f close_later)
> +   finally
> +     (fun () ->
> +       lower_priority pid;  (* lowest priority to gzip *)
> +       f close_later
> +     )
>           (fun () ->
>              let failwith_error s =
>                let mode = if mode = Compress then "Compression" else
> "Decompression" in
>
> _______________________________________________
> xen-api mailing list
> [email protected]
> http://lists.xensource.com/mailman/listinfo/xen-api
>
>
_______________________________________________
xen-api mailing list
[email protected]
http://lists.xensource.com/mailman/listinfo/xen-api

Reply via email to