mirror of
https://github.com/mirage/qubes-mirage-firewall.git
synced 2024-12-27 16:19:24 -05:00
BROKEN: Upgrade to Mirage 6 for solo5 PVH support
For me, this mostly hangs at: ``` 2020-10-26 11:16:31 -00:00: INF [qubes.rexec] waiting for client... 2020-10-26 11:16:31 -00:00: INF [qubes.gui] waiting for client... 2020-10-26 11:16:31 -00:00: INF [qubes.db] connecting to server... ``` Sometimes it gets a bit further: ``` 2020-10-26 11:14:19 -00:00: INF [qubes.rexec] waiting for client... 2020-10-26 11:14:19 -00:00: INF [qubes.gui] waiting for client... 2020-10-26 11:14:19 -00:00: INF [qubes.db] connecting to server... 2020-10-26 11:14:19 -00:00: INF [qubes.db] connected 2020-10-26 11:14:19 -00:00: INF [qubes.rexec] client connected, using protocol version 2 2020-10-26 11:14:19 -00:00: INF [qubes.gui] client connected (screen size: 3840x2160 depth: 24 mem: 32401x) 2020-10-26 11:14:19 -00:00: INF [unikernel] GUI agent connected ```
This commit is contained in:
parent
997446af6c
commit
3dbb9ecb27
@ -2,14 +2,14 @@
|
||||
# It will probably still work on newer images, though, unless Debian
|
||||
# changes some compiler optimisations (unlikely).
|
||||
#FROM ocurrent/opam:alpine-3.10-ocaml-4.10
|
||||
FROM ocurrent/opam@sha256:d30098ff92b5ee10cf7c11c17f2351705e5226a6b05aa8b9b7280b3d87af9cde
|
||||
FROM ocurrent/opam@sha256:4546b41a99b54f163af435327c86f88d06346f2a059f0f42bea431b37329ea8d
|
||||
|
||||
# Pin last known-good version for reproducible builds.
|
||||
# Remove this line (and the base image pin above) if you want to test with the
|
||||
# latest versions.
|
||||
RUN cd ~/opam-repository && git fetch origin master && git reset --hard e81ab2996896b21cba74c43a903b305a5a6341ef && opam update
|
||||
RUN cd ~/opam-repository && git fetch origin master && git reset --hard 6ef290f5681b7ece5d9c085bcf0c55268c118292 && opam update
|
||||
|
||||
RUN opam depext -i -y mirage.3.8.0 lwt.5.3.0
|
||||
RUN opam depext -i -y mirage
|
||||
RUN mkdir /home/opam/qubes-mirage-firewall
|
||||
ADD config.ml /home/opam/qubes-mirage-firewall/config.ml
|
||||
WORKDIR /home/opam/qubes-mirage-firewall
|
||||
|
@ -5,5 +5,5 @@ docker build -t qubes-mirage-firewall .
|
||||
echo Building Firewall...
|
||||
docker run --rm -i -v `pwd`:/home/opam/qubes-mirage-firewall qubes-mirage-firewall
|
||||
echo "SHA2 of build: $(sha256sum qubes_firewall.xen)"
|
||||
echo "SHA2 last known: 0f6b41fa3995afccff1809cb893c45c0863477d4dfacc441c11e3382bec31d39"
|
||||
echo "SHA2 last known: a635ead410ffb72abb8b44e8c5f8f2cfc8752c4787e737ed6cdc0089143ace00"
|
||||
echo "(hashes should match for released versions)"
|
||||
|
@ -33,7 +33,7 @@ let main =
|
||||
package "mirage-qubes" ~min:"0.8.2";
|
||||
package "mirage-nat" ~min:"2.2.1";
|
||||
package "mirage-logs";
|
||||
package "mirage-xen" ~min:"5.0.0";
|
||||
package "mirage-xen" ~min:"6.0.0";
|
||||
package ~min:"4.5.0" "dns-client";
|
||||
package "pf-qubes";
|
||||
]
|
||||
|
@ -6,44 +6,48 @@ open Lwt
|
||||
let src = Logs.Src.create "memory_pressure" ~doc:"Memory pressure monitor"
|
||||
module Log = (val Logs.src_log src : Logs.LOG)
|
||||
|
||||
let total_pages = OS.MM.Heap_pages.total ()
|
||||
let pagesize_kb = Io_page.page_size / 1024
|
||||
let wordsize_in_bytes = Sys.word_size / 8
|
||||
|
||||
let meminfo ~used =
|
||||
let mem_total = total_pages * pagesize_kb in
|
||||
let mem_free = (total_pages - used) * pagesize_kb in
|
||||
Log.info (fun f -> f "Writing meminfo: free %d / %d kB (%.2f %%)"
|
||||
mem_free mem_total (float_of_int mem_free /. float_of_int mem_total *. 100.0));
|
||||
let fraction_free stats =
|
||||
let { OS.Memory.free_words; heap_words; _ } = stats in
|
||||
float free_words /. float heap_words
|
||||
|
||||
let meminfo stats =
|
||||
let { OS.Memory.free_words; heap_words; _ } = stats in
|
||||
let mem_total = heap_words * wordsize_in_bytes in
|
||||
let mem_free = free_words * wordsize_in_bytes in
|
||||
Log.info (fun f -> f "Writing meminfo: free %a / %a (%.2f %%)"
|
||||
Fmt.bi_byte_size mem_free
|
||||
Fmt.bi_byte_size mem_total
|
||||
(fraction_free stats *. 100.0));
|
||||
Printf.sprintf "MemTotal: %d kB\n\
|
||||
MemFree: %d kB\n\
|
||||
Buffers: 0 kB\n\
|
||||
Cached: 0 kB\n\
|
||||
SwapTotal: 0 kB\n\
|
||||
SwapFree: 0 kB\n" mem_total mem_free
|
||||
SwapFree: 0 kB\n" (mem_total / 1024) (mem_free / 1024)
|
||||
|
||||
let report_mem_usage used =
|
||||
let report_mem_usage stats =
|
||||
Lwt.async (fun () ->
|
||||
let open OS in
|
||||
Xs.make () >>= fun xs ->
|
||||
Xs.immediate xs (fun h ->
|
||||
Xs.write h "memory/meminfo" (meminfo ~used)
|
||||
Xs.write h "memory/meminfo" (meminfo stats)
|
||||
)
|
||||
)
|
||||
|
||||
let init () =
|
||||
Gc.full_major ();
|
||||
let used = OS.MM.Heap_pages.used () in
|
||||
report_mem_usage used
|
||||
let stats = OS.Memory.quick_stat () in
|
||||
report_mem_usage stats
|
||||
|
||||
let status () =
|
||||
let used = OS.MM.Heap_pages.used () |> float_of_int in
|
||||
let frac = used /. float_of_int total_pages in
|
||||
if frac < 0.9 then `Ok
|
||||
let stats = OS.Memory.quick_stat () in
|
||||
if fraction_free stats > 0.1 then `Ok
|
||||
else (
|
||||
Gc.full_major ();
|
||||
let used = OS.MM.Heap_pages.used () in
|
||||
report_mem_usage used;
|
||||
let frac = float_of_int used /. float_of_int total_pages in
|
||||
if frac > 0.9 then `Memory_critical
|
||||
let stats = OS.Memory.quick_stat () in
|
||||
report_mem_usage stats;
|
||||
if fraction_free stats < 0.1 then `Memory_critical
|
||||
else `Ok
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user