| 4 Sep 2023 |
nbp | I wish we could have a wireguard-boot, where one image would connect using wireguard to download its latest image. This way we could make it work without having to redo the DHCP of the network. | 15:11:38 |
hexa |
Nowadays, the hard limit defaults to 524288, a very high value compared to historical defaults. Typically applications should increase their soft limit to the hard limit on their own, if they are OK with working with file descriptors above 1023, i.e. do not use select(2).
| 15:12:14 |
hexa | I think knowing what number of open fds we're having on the builders would be an easy first step | 15:21:40 |
K900 ⚡️ | In reply to @vcunat:matrix.org A million (per process) sounds quite a lot. It's not per process though | 15:22:43 |
K900 ⚡️ | It's per cgroup | 15:22:46 |
K900 ⚡️ | And everything is in the cgroup | 15:22:53 |
vcunat | Can you point me to docs about that? | 15:27:52 |
K900 ⚡️ | Uh, it's in systemd docs somewhere | 15:28:11 |
vcunat | I really thought that setrlimit is per-process and I can't quickly find a reference. | 15:28:15 |
nbp | I recall this could be done on the command line, but I forgot the command since. | 15:28:50 |
vcunat | systemd docs about that limit says
Note that most process resource limits configured with these options are per-process
| 15:28:55 |
vcunat | man systemd.exec.5 | 15:29:06 |
vcunat | In reply to @nbp:mozilla.org I recall this could be done on the command line, but I forgot the command since. ulimit -n uses the same syscall | 15:30:41 |
K900 ⚡️ | In reply to @vcunat:matrix.org I really thought that setrlimit is per-process and I can't quickly find a reference. setrlimit yes but I think systemd does some fancier cgroup stuff | 15:30:47 |
K900 ⚡️ | Not 100% sure though | 15:30:57 |
vcunat |
Set soft and hard limits on various resources for executed processes. See setrlimit(2) for
| 15:31:06 |
vcunat | *
Set soft and hard limits on various resources for executed processes. See setrlimit(2) for [...]
| 15:31:29 |
hexa | so what does that mean? | 15:32:32 |
hexa | nix-daemon can open a million files, alright | 15:32:38 |
hexa | and everything it spawns can open 1024? | 15:32:45 |
hexa | * and everything it spawns can open their very own 1024? | 15:33:05 |
vcunat | These limits are inherited into descendant processes. | 15:34:33 |
vcunat | So each of these processes should be able to use a million file-descriptors. | 15:35:05 |
hexa | except for the test runner, which is stuck with 1024 for some reason | 15:35:23 |
vcunat | Yes, we must be missing something. | 15:35:46 |
vcunat | The systemd option says to set both soft and hard limit, so I assume that's not it. | 15:36:07 |
vcunat | In reply to @hexa:lossy.network except for the test runner, which is stuck with 1024 for some reason Did you see 1024 in some logs? | 15:36:36 |
hexa | I think so | 15:36:55 |
hexa | diff --git a/nixos/tests/firefox.nix b/nixos/tests/firefox.nix
index 3f9cea6662fb..6e311259a6eb 100644
--- a/nixos/tests/firefox.nix
+++ b/nixos/tests/firefox.nix
@@ -58,8 +58,19 @@ in
};
+ extraPythonPackages = ps: with ps; [
+ psutil
+ types-psutil
+ ];
+
testScript = ''
from contextlib import contextmanager
+ import psutil
+
+
+ def sample_open_files():
+ for proc in psutil.process_iter():
+ machine.log(f"{proc.name()}={proc.num_fds()}")
@contextmanager
@@ -95,6 +106,8 @@ in
machine.wait_for_x()
+ sample_open_files()
+
with subtest("Wait until Firefox has finished loading the Valgrind docs page"):
machine.execute(
"xterm -e '${firefoxPackage'.unwrapped.binaryName} file://${pkgs.valgrind.doc}/share/doc/valgrind/html/index.html' >&2 &"
@@ -102,6 +115,8 @@ in
machine.wait_for_window("Valgrind")
machine.sleep(40)
+ sample_open_files()
+
with subtest("Check whether Firefox can play sound"):
with record_audio(machine):
machine.succeed(
| 17:11:19 |
hexa | this is how I sampled open files fwiw | 17:11:24 |