我有一台笔记本电脑,通常运行 GPU 加密货币挖掘。我希望笔记本电脑在启动任何密集的深度学习进程时终止此加密货币挖掘。因此,我并不是想降低 GPU 加密货币挖掘的优先级;我实际上是想在启动某些明显密集的 GPU 进程(例如使用 TensorFlow)时终止该进程。
如何实现?我应该运行一个守护进程来监视特定进程吗?感觉这可能是 Linux 中已经提供的功能。
答案1
我建议使用 systemd 单元启动并维持一个脚本,定期检查你的机器学习过程。
将以下脚本放入/usr/local/bin
并使其可执行chmod +x
脚本:
#!/bin/bash
#replace with your process names
plearning="tensorflow"
pmining="mining"
sleepint="30" #interval in seconds between checks
while true;
do
if pgrep -x "$plearning" > /dev/null
then
killall -q "$pmining"
logger "miner killed"
fi
sleep $sleepint
done
/etc/systemd/system
例如,在中创建一个 systemd 单元miningswitch.service
单元:
[Unit]
Description=test
[Service]
ExecStart=/usr/local/bin/miningswitch
ExecStop=killall miningswitch
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
使用以下命令启动并启用服务systemctl enable --now miningswitch.service
答案2
由于 GPU 依赖于 CPU 进程和硬盘来存储数据,因此你可以nice
同时 使用伊奥尼采
降低挖矿过程的 CPU 和 I/O 优先级。
否则,您可以创建一个cron
定期运行的任务,以检查深度学习过程是否存在并终止矿工。
这个任务可以简单到:
#!/bin/bash
if pgrep -x "deep-learning-process" > /dev/null
then
kill "mining-process"
fi