-
-
Notifications
You must be signed in to change notification settings - Fork 14.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
adaptivemm: init at unstable-20230116 #225782
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,86 @@ | ||||||||||||||||||||||||||||
{ config, lib, pkgs, ... }: | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
with lib; | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
let | ||||||||||||||||||||||||||||
cfg = config.services.adaptivemm; | ||||||||||||||||||||||||||||
in { | ||||||||||||||||||||||||||||
options = { | ||||||||||||||||||||||||||||
services.adaptivemm = { | ||||||||||||||||||||||||||||
enable = mkEnableOption (lib.mdDoc "Proactively tune kernel free memory configuration"); | ||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
package = mkOption { | ||||||||||||||||||||||||||||
type = types.package; | ||||||||||||||||||||||||||||
default = pkgs.adaptivemm; | ||||||||||||||||||||||||||||
defaultText = literalExpression "pkgs.adaptivemm"; | ||||||||||||||||||||||||||||
description = lib.mdDoc '' | ||||||||||||||||||||||||||||
Which adaptivemm package to use. | ||||||||||||||||||||||||||||
''; | ||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||
Comment on lines
+12
to
+19
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
verbosity = mkOption { | ||||||||||||||||||||||||||||
type = types.int; | ||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There's some magic stuff in
Suggested change
|
||||||||||||||||||||||||||||
default = 0; | ||||||||||||||||||||||||||||
defaultText = literalExpression "0"; | ||||||||||||||||||||||||||||
description = lib.mdDoc '' | ||||||||||||||||||||||||||||
Verbosity, from 0 to 5. | ||||||||||||||||||||||||||||
''; | ||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
maxWatermarkGap = mkOption { | ||||||||||||||||||||||||||||
type = types.int; | ||||||||||||||||||||||||||||
default = 5; | ||||||||||||||||||||||||||||
defaultText = literalExpression "5"; | ||||||||||||||||||||||||||||
description = lib.mdDoc '' | ||||||||||||||||||||||||||||
Maximum allowed gap between high and low watermarks in GB. | ||||||||||||||||||||||||||||
''; | ||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
aggressiveness = mkOption { | ||||||||||||||||||||||||||||
type = types.int; | ||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||
default = 2; | ||||||||||||||||||||||||||||
defaultText = literalExpression "2"; | ||||||||||||||||||||||||||||
description = lib.mdDoc '' | ||||||||||||||||||||||||||||
Aggressiveness level (1=high, 2=normal, 3=low). | ||||||||||||||||||||||||||||
''; | ||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
config = mkIf cfg.enable { | ||||||||||||||||||||||||||||
environment = { | ||||||||||||||||||||||||||||
systemPackages = [ cfg.package ]; | ||||||||||||||||||||||||||||
etc."sysconfig/adaptivemmd".source = "${cfg.package}/etc/sysconfig/adaptivemmd"; | ||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
systemd.services.adaptivemmd = { | ||||||||||||||||||||||||||||
serviceConfig = { | ||||||||||||||||||||||||||||
Type = "forking"; | ||||||||||||||||||||||||||||
EnvironmentFile = "/etc/sysconfig/adaptivemmd"; | ||||||||||||||||||||||||||||
Comment on lines
+51
to
+59
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. unless you have a strong suspicion that it would be beneficial to the average user to run this manually, I think I would just hide this file and keep the package away from the environment.
Suggested change
|
||||||||||||||||||||||||||||
ExecStart = let | ||||||||||||||||||||||||||||
verboseFlag = assert (cfg.verbosity >= 0 && cfg.verbosity <= 5); | ||||||||||||||||||||||||||||
if cfg.verbosity == 0 then "" | ||||||||||||||||||||||||||||
else lib.concatStrings (["-"] ++ (lib.replicate cfg.verbosity "v")); | ||||||||||||||||||||||||||||
aggressivenessFlag = assert (cfg.aggressiveness >= 1 && cfg.aggressiveness <= 3); | ||||||||||||||||||||||||||||
"-a ${builtins.toString cfg.aggressiveness}"; | ||||||||||||||||||||||||||||
gapFlag = "-m ${builtins.toString cfg.maxWatermarkGap}"; | ||||||||||||||||||||||||||||
Comment on lines
+61
to
+66
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||
in "${cfg.package}/bin/adaptivemmd ${verboseFlag} ${aggressivenessFlag} ${gapFlag}"; | ||||||||||||||||||||||||||||
KillMode = "control-group"; | ||||||||||||||||||||||||||||
Restart = "on-failure"; | ||||||||||||||||||||||||||||
RestartSec = "10s"; | ||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
unitConfig = { | ||||||||||||||||||||||||||||
Description = "Adaptive free memory optimizer daemon"; | ||||||||||||||||||||||||||||
Documentation = "man:adaptivemmd(8)"; | ||||||||||||||||||||||||||||
After = [ "systemd-sysctl.service" "local-fs.target" ]; | ||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
wantedBy = [ "multi-user.target" ]; | ||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
meta = { | ||||||||||||||||||||||||||||
maintainers = with maintainers; [ cmm ]; | ||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||
Comment on lines
+83
to
+85
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit
Suggested change
|
||||||||||||||||||||||||||||
} |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,31 @@ | ||||||||||||||||||||||||||||||||||||||||
{ lib, stdenv, fetchFromGitHub }: | ||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
let | ||||||||||||||||||||||||||||||||||||||||
pname = "adaptivemm"; | ||||||||||||||||||||||||||||||||||||||||
in stdenv.mkDerivation { | ||||||||||||||||||||||||||||||||||||||||
inherit pname; | ||||||||||||||||||||||||||||||||||||||||
version = "unstable-2023-01-16"; | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
src = fetchFromGitHub { | ||||||||||||||||||||||||||||||||||||||||
owner = "oracle"; | ||||||||||||||||||||||||||||||||||||||||
repo = pname; | ||||||||||||||||||||||||||||||||||||||||
rev = "92f7d6e9155e153db884ebb7da25c0a9cbcb29fe"; | ||||||||||||||||||||||||||||||||||||||||
hash = "sha256-3aRfHn0HV9CfcLulDimHsMJPs8/VAWRVDxPijKVhtDM="; | ||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
CFLAGS = "-I. -Wall -O2"; | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
installPhase = '' | ||||||||||||||||||||||||||||||||||||||||
mkdir -p $out/bin $out/etc/sysconfig $out/share/man/man8 | ||||||||||||||||||||||||||||||||||||||||
cp adaptivemmd $out/bin/ | ||||||||||||||||||||||||||||||||||||||||
cp $src/adaptivemmd.cfg $out/etc/sysconfig/adaptivemmd | ||||||||||||||||||||||||||||||||||||||||
cp $src/adaptivemmd.8 $out/share/man/man8/ | ||||||||||||||||||||||||||||||||||||||||
''; | ||||||||||||||||||||||||||||||||||||||||
Comment on lines
+17
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
meta = with lib; { | ||||||||||||||||||||||||||||||||||||||||
description = "A userspace daemon for proactive free memory management"; | ||||||||||||||||||||||||||||||||||||||||
license = licenses.gpl2; | ||||||||||||||||||||||||||||||||||||||||
platforms = platforms.linux; | ||||||||||||||||||||||||||||||||||||||||
maintainers = with maintainers; [ cmm ]; | ||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||
Comment on lines
+25
to
+30
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
to address #208242 for this module, uses of
with
such as this should be avoided.consider
inherits
where you find yourself usinglib.foo
excessively.this nix.dev page on best practices with
with
may be helpful