增加对 1GB Huge Pages 的支持,添加相关服务和配置,优化安装脚本
This commit is contained in:
+14
-71
@@ -16,10 +16,10 @@ declare -r RESET="\033[0m"
|
||||
CONFIG_DIR="/etc/xxxig"
|
||||
LOG_DIR="/var/log/xxxig"
|
||||
CONFIG_FILE="$CONFIG_DIR/config.json"
|
||||
HUGEPAGES_HELPER="/usr/local/libexec/xxxig-enable-1gb-pages"
|
||||
HUGEPAGES_SERVICE="/etc/systemd/system/xxxig-hugepages.service"
|
||||
DAEMON_DROPIN_DIR="/etc/systemd/system/xxxig-daemon.service.d"
|
||||
DAEMON_DROPIN="$DAEMON_DROPIN_DIR/installer.conf"
|
||||
HUGEPAGES_MARKER="$CONFIG_DIR/1gb-pages.enabled"
|
||||
LEGACY_HUGEPAGES_HELPER="/usr/local/libexec/xxxig-enable-1gb-pages"
|
||||
LEGACY_HUGEPAGES_SERVICE="/etc/systemd/system/xxxig-hugepages.service"
|
||||
LEGACY_DAEMON_DROPIN="/etc/systemd/system/xxxig-daemon.service.d/installer.conf"
|
||||
|
||||
# Gitea 配置
|
||||
GITEA_SERVER="gitea.bcde.io"
|
||||
@@ -66,11 +66,10 @@ add_apt_repository() {
|
||||
|
||||
# 卸载旧版本
|
||||
uninstall_xxxig() {
|
||||
systemctl stop xxxig-daemon xxxig-server xxxig-hugepages 2>/dev/null || true
|
||||
systemctl disable xxxig-daemon xxxig-server xxxig-hugepages 2>/dev/null || true
|
||||
systemctl stop xxxig-daemon xxxig-server 2>/dev/null || true
|
||||
systemctl disable xxxig-daemon xxxig-server 2>/dev/null || true
|
||||
apt-get remove -y xxxig 2>/dev/null || true
|
||||
rm -rf "$CONFIG_DIR" "$LOG_DIR" /etc/apt/sources.list.d/xxxig.list
|
||||
rm -f "$HUGEPAGES_HELPER" "$HUGEPAGES_SERVICE" "$DAEMON_DROPIN"
|
||||
rm -rf "$CONFIG_DIR" "$LOG_DIR" "/etc/apt/sources.list.d/${GITEA_OWNER}.list"
|
||||
systemctl daemon-reload 2>/dev/null || true
|
||||
}
|
||||
|
||||
@@ -86,75 +85,19 @@ install_xxxig() {
|
||||
log "$GREEN" "安装完成"
|
||||
}
|
||||
|
||||
write_hugepages_helper() {
|
||||
mkdir -p "$(dirname "$HUGEPAGES_HELPER")"
|
||||
cat >"$HUGEPAGES_HELPER" <<'EOF'
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
sysctl -w vm.nr_hugepages="$(nproc)"
|
||||
|
||||
found=0
|
||||
for node in /sys/devices/system/node/node*; do
|
||||
file="$node/hugepages/hugepages-1048576kB/nr_hugepages"
|
||||
[ -e "$file" ] || continue
|
||||
printf '3\n' >"$file"
|
||||
actual=$(cat "$file")
|
||||
[ "$actual" -ge 3 ] || exit 1
|
||||
found=1
|
||||
done
|
||||
|
||||
[ "$found" -eq 1 ]
|
||||
EOF
|
||||
chmod 755 "$HUGEPAGES_HELPER"
|
||||
}
|
||||
|
||||
write_hugepages_service() {
|
||||
cat >"$HUGEPAGES_SERVICE" <<EOF
|
||||
[Unit]
|
||||
Description=Reserve Huge Pages for XXXig
|
||||
Before=xxxig-daemon.service
|
||||
ConditionPathExists=/sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=$HUGEPAGES_HELPER
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
}
|
||||
|
||||
write_daemon_dropin() {
|
||||
mkdir -p "$DAEMON_DROPIN_DIR"
|
||||
{
|
||||
echo "[Unit]"
|
||||
if [[ "$one_gb_pages" == "true" ]]; then
|
||||
echo "Requires=xxxig-hugepages.service"
|
||||
echo "After=xxxig-hugepages.service"
|
||||
fi
|
||||
echo
|
||||
echo "[Service]"
|
||||
echo "ReadWritePaths=$LOG_DIR $CONFIG_DIR"
|
||||
} >"$DAEMON_DROPIN"
|
||||
}
|
||||
|
||||
configure_hugepages() {
|
||||
write_daemon_dropin
|
||||
[[ "$one_gb_pages" == "true" ]] || return 0
|
||||
|
||||
log "$BLUE" "配置 1GB Huge Pages 持久池..."
|
||||
write_hugepages_helper
|
||||
write_hugepages_service
|
||||
log "$GREEN" "1GB Huge Pages 初始化服务配置完成"
|
||||
if [[ "$one_gb_pages" == "true" ]]; then
|
||||
touch "$HUGEPAGES_MARKER"
|
||||
chmod 644 "$HUGEPAGES_MARKER"
|
||||
log "$GREEN" "已启用 DEB 包内置的 1GB Huge Pages 服务"
|
||||
else
|
||||
rm -f "$HUGEPAGES_MARKER"
|
||||
fi
|
||||
}
|
||||
|
||||
start_service() {
|
||||
log "$BLUE" "启动服务..."
|
||||
systemctl daemon-reload
|
||||
if [[ "$one_gb_pages" == "true" ]]; then
|
||||
systemctl enable xxxig-hugepages.service
|
||||
fi
|
||||
systemctl enable --now xxxig-daemon.service
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user