Некоторые системы разыменуют символьную ссылку, когда Вы добавите запаздывающую наклонную черту (по крайней мере, если символьная ссылка указывает на каталог):
mkdir -p b/c && touch b/c/foo && ln -s b/c a
rm -rf a/ && rm -f a
# removed "b/c" and "a"
Стандарт POSIX изменился немного (см. Разрешение Пути в Станд. IEEE 1003.1, 2004 Выпуск по сравнению со Станд. IEEE 1003.1-2008), но это походит на поведение для пути с запаздывающей наклонной чертой и заключительного пути компоненты, который является символьной ссылкой, (главным образом) то же: символьная ссылка разрешена.
Не все системы реализуют это поведение хотя (см. комментарий Gilles).
Для Nvidia GPU там инструмент nvidia-smi
это может показать использование памяти, использование GPU и температуру GPU. Также существует список, вычисляют процессы и еще немного опций, но моя видеокарта (GeForce 9600 GT) не полностью поддерживается.
Sun May 13 20:02:49 2012
+------------------------------------------------------+
| NVIDIA-SMI 3.295.40 Driver Version: 295.40 |
|-------------------------------+----------------------+----------------------+
| Nb. Name | Bus Id Disp. | Volatile ECC SB / DB |
| Fan Temp Power Usage /Cap | Memory Usage | GPU Util. Compute M. |
|===============================+======================+======================|
| 0. GeForce 9600 GT | 0000:01:00.0 N/A | N/A N/A |
| 0% 51 C N/A N/A / N/A | 90% 459MB / 511MB | N/A Default |
|-------------------------------+----------------------+----------------------|
| Compute processes: GPU Memory |
| GPU PID Process name Usage |
|=============================================================================|
| 0. Not Supported |
+-----------------------------------------------------------------------------+
Для Intel GPU там существует intel-gpu-tools
из проекта http://intellinuxgraphics.org/, который приносит команду intel_gpu_top
(среди других вещей). Это подобно top
и htop
, но специально для Intel GPU.
render busy: 18%: ███▋ render space: 39/131072
bitstream busy: 0%: bitstream space: 0/131072
blitter busy: 28%: █████▋ blitter space: 28/131072
task percent busy
GAM: 33%: ██████▋ vert fetch: 0 (0/sec)
GAFS: 3%: ▋ prim fetch: 0 (0/sec)
VS: 0%: VS invocations: 559188 (150/sec)
SF: 0%: GS invocations: 0 (0/sec)
VF: 0%: GS prims: 0 (0/sec)
DS: 0%: CL invocations: 186396 (50/sec)
CL: 0%: CL prims: 186396 (50/sec)
SOL: 0%: PS invocations: 8191776208 (38576436/sec)
GS: 0%: PS depth pass: 8158502721 (38487525/sec)
HS: 0%:
TE: 0%:
GAFM: 0%:
SVG: 0%:
Последняя версия atMonitor, которая будет поддерживать связанные с GPU функции, является atMonitor 2.7.1.
– и ссылка на 2.7.1 поставляет 2.7b.
Для более поздней версии приложения atMonitor - FAQ объясняет:
Для создания atMonitor совместимый с MacOS 10.8, мы удалили все связанные с GPU функции.
Я экспериментировал с 2.7b иначе 2.7.1 на Пуме с MacBookPro5,2 с NVIDIA GeForce 9600M Большой. Приложение работало в течение нескольких секунд перед выходом, оно показало температуру, но не использование:
Для Linux использовать nvidia-smi -l 1
будет постоянно давать Вам gpu информацию об использовании, с в интервале обновления 1 секунды.
watch -n 1 nvidia-smi
получить непрерывные обновления, не заполняя терминал выводом
– ali_m
28.01.2016, 01:59
Для полноты AMD имеет две опции:
fglrx (драйверы с закрытым исходным кодом).
$ aticonfig --odgc --odgt
мезаструктура (драйверы с открытым исходным кодом), можно использовать RadeonTop.
Просмотрите свое использование GPU, и для процента общей активности и для отдельных блоков.
Вы могли бы использовать RadiCale , хотя я использую его только ежедневно для моей повестки дня.
Отредактируйте: О безопасности: Документация утверждает, что модули аутентификации не были широко протестированы, и что вы должны полагаться на надлежащий HTTP-сервер, если это проблема для вас. Я мое дело, я прибил проблему, ограничивая доступ к порту на маршрутизаторе, что делает календарь только через переадресацию порта SSH. Я считаю, что это, вероятно, не жизнеспособное решение в вашем случае, и вам придется использовать правильный HTTP-сервер.
-121--108423- Тест [-F «$ DIR»]
истинствует, если существует $ dir
и является файлом . Это не то, что вы хотите вообще. Как я предложил в вашем предыдущем вопросе, вы должны использовать $ #
, чтобы проверить, прошел ли аргумент. Тогда вы можете использовать --e
, чтобы проверить, существует ли этот аргумент.
Следующий выпуск состоит в том, что находятся
также будет список .
, текущий каталог. Вы можете использовать -Mindepth 1
, чтобы избежать этого с GNU Найти
:
DIR="$1"
if [ $# -lt 1 ]
then
echo "Please pass at least one argument" && exit
fi
if [ -e "$DIR" ]
then
echo -n "total directories:" ; find "$DIR" -mindepth 1 -type d | wc -l
echo -n "total files:" ; find $DIR -type f | wc -l
else
echo "Directory doesn't exist"
fi
Вы также можете конденсироваться выше (хотя эта версия не отличается дифференцированием каталога, которое не существует И тот, который является файлом, а не каталогом):
dir="$1"
[ $# -lt 1 ] && echo "Please pass at least one argument" && exit
[ -d "$dir" ] && printf "total directories: %s\ntotal files:%s\n" \
$(find "$dir" -type d | wc -l) $(find "$dir" -type f | wc -l) ||
printf "%s\n" "There is no directory named '$dir'."
-121--209832- NVIDIA-SMI
не работает на некоторых машинах Linux (возвращает N / A для многих свойств). Вместо этого вы можете использовать
NVIDIA-НАСТРОЙКИ
.
nvidia-settings -q GPUUtilization -q useddedicatedgpumemory
Вы также можете использовать:
watch -n0.1 "nvidia-settings -q GPUUtilization -q useddedicatedgpumemory"
для непрерывного мониторинга.
для nvidia на linux я использую следующий сценарий python, который использует необязательную задержку и повторяется, как iostat и vmstat
https://gist.github.com/matpalm/9c0c7c6a6f3681a0d39d
$ gpu_stat.py 1 2
{"util":{"PCIe":"0", "memory":"10", "video":"0", "graphics":"11"}, "used_mem":"161", "time": 1424839016}
{"util":{"PCIe":"0", "memory":"10", "video":"0", "graphics":"9"}, "used_mem":"161", "time":1424839018}
Недавно я написал простую утилиту командной строки под названием gpustat
(которая является оболочкой для nvidia-smi
): посетите https://github.com/wookayin/gpustat .
Для Linux я использую этот инструмент, похожий на HTOP, который я написал сам. Он отслеживает и дает обзор температуры графического процессора, а также использования ядра / видеопамяти / PCI-E и шины памяти. Однако он не отслеживает, что работает на графическом процессоре.
У меня видеокарта GeForce 1060 GTX, и я обнаружил, что следующая команда дает мне информацию об использовании карты, температуре, скорости вращения вентилятора и энергопотреблении:
$ nvidia-smi --format=csv --query-gpu=power.draw,utilization.gpu,fan.speed,temperature.gpu
Вы можете увидеть список всех параметров запроса с помощью:
$ nvidia-smi --help-query-gpu
У меня были процессы, которые завершались (вероятно, были убиты или аварийно завершены )и продолжали использовать ресурсы, но не были перечислены в nvidia-smi
. Обычно эти процессы просто занимали память GPU.
Если вы считаете, что у вас есть процесс, использующий ресурсы графического процессора, и он не показан в nvidia-smi
, вы можете попробовать запустить эту команду для двойной проверки. Он покажет вам, какие процессы используют ваши графические процессоры.
sudo fuser -v /dev/nvidia*
Это работает на EL7, Ubuntu или других дистрибутивах, устройства nvidia могут быть указаны под другим именем/расположением.
Этот скрипт более читабелен и предназначен для простых модов и расширений.
Вы можете заменить терминал gnome -своей любимой оконной программой терминала.
#! /bin/bash
if [ "$1" = "--guts" ]; then
echo; echo " ctrl-c to gracefully close"
f "$a"
f "$b"
exit 0; fi
# easy to customize here using "nvidia-smi --help-query-gpu" as a guide
a='--query-gpu=pstate,memory.used,utilization.memory,utilization.gpu,encoder.stats.sessionCount'
b='--query-gpu=encoder.stats.averageFps,encoder.stats.averageLatency,temperature.gpu,power.draw'
p=0.5 # refresh period in seconds
s=110x9 # view port as width_in_chars x line_count
c="s/^/ /; s/, +/\t/g"
t="`echo '' |tr '\n' '\t'`"
function f() { echo; nvidia-smi --format=csv "$1" |sed -r "$c" |column -t "-s$t" "-o "; }
export c t a b; export -f f
gnome-terminal --hide-menubar --geometry=$s -- watch -t -n$p "`readlink -f \"$0\"`" --guts
#
Лицензия :GNU GPLv2, TranSeed Research
Вы можете использовать
nvidia-smi pmon -i 0
для мониторинга каждого процесса в GPU 0. включая вычислительный/графический режим, использование sm, использование памяти, использование кодировщика, использование декодера.
Я не видел этого в доступных ответах (, за исключением, может быть, комментария ), поэтому я решил добавить, что вы можете получить более приятное обновление nvidia-smi
с помощьюwatch
. Это обновляет экран при каждом обновлении, а не постоянно прокручивает.
watch -n 1 nvidia-smi
для обновлений с интервалом в одну секунду. Замените 1
на все, что хотите, включая доли секунды :
watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi
Вы можете использовать nvtop
, это похоже на htop
, но для графических процессоров NVIDIA. Ссылка:https://github.com/Syllo/nvtop
Недавно я написал средство мониторинга под названием nvitop
, интерактивное средство просмотра процессов NVIDIA -GPU.
Он написан на чистом Python и прост в установке.
Установить из PyPI:
pip3 install --upgrade nvitop
Установите последнюю версию с GitHub(рекомендуется):
pip3 install git+https://github.com/XuehaiPan/nvitop.git#egg=nvitop
Запуск в качестве монитора ресурсов:
nvitop -m
nvitop
покажет статус графического процессора, как и nvidia-smi
, но с дополнительными причудливыми полосами и графиками истории.
Для процессов он будет использовать psutil
для сбора информации о процессе и отображения полей USER
, %CPU
, %MEM
, TIME
и COMMAND
, что гораздо более подробно, чем nvidia-smi
.. Кроме того, он реагирует на действия пользователя в режиме монитора. Вы можете прервать или завершить ваши процессы на GPU.
nvitop
поставляется с экраном просмотра дерева -и экраном окружения:
Кроме того, nvitop
можно интегрировать в другие приложения. Например, интегрируйте в обучающий код PyTorch:
import os
from nvitop.core import host, Device, HostProcess, GpuProcess
from torch.utils.tensorboard import SummaryWriter
device = Device(0)
this_process = GpuProcess(os.getpid(), device)
writer = SummaryWriter()
for epoch in range(n_epochs):
# some training code here
#...
this_process.update_gpu_status()
writer.add_scalars(
'monitoring',
{
'device/memory_used': float(device.memory_used()) / (1 << 20), # convert bytes to MiBs
'device/memory_utilization': device.memory_utilization(),
'device/gpu_utilization': device.gpu_utilization(),
'host/cpu_percent': host.cpu_percent(),
'host/memory_percent': host.memory_percent(),
'process/cpu_percent': this_process.cpu_percent(),
'process/memory_percent': this_process.memory_percent(),
'process/used_gpu_memory': float(this_process.gpu_memory()) / (1 << 20), # convert bytes to MiBs
},
global_step
)
Подробнее см. https://github.com/XuehaiPan/nvitop.
Примечание:nvitop
выпущено под лицензией GPLv3 . Пожалуйста, не стесняйтесь использовать его как пакет или зависимость для ваших собственных проектов. Однако, если вы хотите добавить или изменить некоторые функции nvitop
или скопировать некоторый исходный код nvitop
в свой собственный код, исходный код также должен быть выпущен под лицензией GPLv3.
watch -n 0.5 nvidia-smi
, будет держать вывод в курсе, не заполняя Ваш терминал выводом. – Bar 14.07.2016, 21:26watch -d -n 0.5 nvidia-smi
будет еще лучше. – zeekvfu 17.01.2018, 18:27