Utilization gpu что это
Уменьшаю нагрев своей видеокарты и продляю ее ресурс путем модификации BIOS-a
Недавно достал с полки свою старенькую видеокарту GIGABYTE R9 280X 3Gb. Хорошо, что я не успел ее продать до повышения цен, да и вообще не успел ее продать. А то пришлось бы сейчас покупать, какую ни будь видеокарту по безумно высокой цене. Теперь она пригодилась самому для установки в компьютер. Так сказать, новое это хорошо забытое старое, вот и для меня она теперь в каком-то роде стала новой. Думаю, что еще у многих есть такие видеокарты.
реклама
Так вот, имеется в наличии видеокарта GIGABYTE R9 280X 3Gb, та еще «горячая штучка», нужно сказать. При больших нагрузках GPU нагревается до 90 градусов. Производитель для этой модели видеокарт декларирует такую температуру, как нормальную. Но, тем не менее, я хочу уменьшить температуру настолько, насколько это возможно, с сохранением ее устойчивой работы, при помощи модификации BIOS-a. А именно, в BIOS-е буду уменьшать напряжение питания GPU до ее неустойчивой работы, и на один шаг верну напряжение питания в сторону его увеличения. Проверку устойчивости работы видеокарты в режиме большой нагрузки GPU буду проводить с помощью программы «FurMark» (волосатый бублик). Ну и сразу скажу, что перед проведением модификации BIOS-a термопасту на GPU я уже заранее заменил, и систему охлаждения продул. На целесообразность этой затеи и ожидание хорошего результата меня натолкнула та мысль, что производитель устанавливает напряжение питания GPU с запасом, причем с таким, чтобы гарантированно обеспечивалась стабильная работа видеокарт даже с установкой в них GPU из неудачных партий (которые требуют для стабильной работы повышенного напряжения питания). Ну а если в видеокарту попадают «удачные» GPU, способные стабильно работать при более низком напряжении питания, то производитель не подбирает к ним индивидуальные напряжения, а использует то же напряжение, что и для видеокарт с «неудачными» GPU. Поэтому, если мне повезет, и в моей видеокарте окажется установлен «удачный» GPU, то я смогу значительно (я так надеюсь) снизить его напряжение питания, сохраняя при этом стабильную работу. Тем самым уменьшу тепловыделение и соответственно его температуру, и продлю ресурс его работы.
Перед началом работ нужно сохранить оригинальный BIOS, для его дальнейшей модификации. Для этого воспользуюсь программой «GPU-Z». Открываю ее, нажимаю кнопку со стрелочкой, указываю путь сохранения и сохраняю.
реклама
реклама
реклама
После окончания прошивки, прошивальщик просит перезагрузить компьютер. Соглашаюсь.
Теперь сравниваю температуру в «FurMark» при работе видеокарты со старым, родным BIOS-ом, и модифицированным.
Температура со старым, родным BIOS-ом составила 94 градуса, при скорости вращения вентиляторов системы охлаждения 100%.
Температура с модифицированным BIOS-ом составила 73 градуса, при скорости вращения вентиляторов системы охлаждения 83%.
Отсюда делаю вывод, что снижение напряжения питания GPU на 150 мВ, или 0.150 В. Привело к снижению температуры GPU на 21 градус, и снижению скорости вращения вентиляторов со 100% до 83%. Что, считаю очень хорошим результатом. И да, с GPU мне действительно очень повезло, он оказался очень даже «удачным».
Еще большой плюс этой видеокарты состоит в том, что она имеет два BIOS-а, и если вы прошили нерабочий BIOS, и видеокарта не запустилась, то выключаете компьютер, переключаетесь на резервный BIOS, загружаетесь с него. После этого при включенном компьютере переключаете на видеокарте переключатель на нерабочий BIOS, и перепрошиваете его.
Метрика загруженности процессора (CPU utiliztion) — это не то что вы думаете
Всем привет. Предлагаю вашему вниманию свой перевод поста «CPU Utilization is Wrong» из блога Брендана Грегга.
Как вы думаете, что значит нагрузка на процессор 90% на картинке ниже?
Вот что это значит на самом деле:
Stalled, то есть «приостановлено» значит, что в данный момент процессор не обрабатывает инструкции, обычно это означает, что он ожидает завершения операций ввода/вывода связанных с памятью (здесь и далее речь о RAM, а не дисковом вводе/выводе). Соотношение между «занято» и «приостановлено» (busy/stalled), которое я привел выше, это то что я обычно вижу в продакшене. Вероятно, что ваш процессор тоже большую часть времени находится в stalled состоянии, но вы об этом и не догадываетесь.
Что это значит для вас? Понимание того насколько много ваш процессор находится в приостановленном состоянии может помочь вам понять куда направить усилия по оптимизации производительности приложения: на ускорение кода или уменьшение числа операций ввода/вывода связанных с памятью. Всем кто заинтересован в оптимизации нагрузки на процессор, в особенности в облаках с настроенным автомасштабированием на основе нагрузки на CPU, будет полезно знать насколько долго процессор находится в приостановленном состоянии.
Что такое нагрузка на процессор на самом деле?
Метрика, которую мы называем нагрузкой на процессор (CPU utilization) на самом деле это «не-idle время», то есть время, которое процессор не выполняет idle-тред. Ядро вашей операционной системы (какую бы ОС вы не использовали) обычно следит за этим во время переключения контекста. Если не-idle тред запустился, а затем спустя 100 милисекунд остановился, то ядро посчитает, что процессор был использован в течение всего этого времени.
Эта метрика так же стара как и системы совместного использования времени (time sharing systems). В бортовом компьютере лунного модуля Apollo (это пионер среди систем совместного использования времени) idle-тред назывался «DUMMY JOB» и инженеры мониторили циклы выполняющие его в сравнении с реальными задачами, это было важной метрикой измерения нагрузки. (Я писал об этом ранее).
Что же с этой метрикой не так?
Со временем все становится только хуже. Долгое время производители процессоров увеличивали тактовые частоты своих процессоров быстрее чем производители памяти уменьшали задержки доступа к памяти (CPU DRAM gap). Примерно в 2005 году процессоры достигли частот в 3 GHz и с тех пор мощность процессоров растет не за счет увеличения тактовой частоты, а за счет большего числа ядер, гипертрединга и многопроцессорных конфигураций. Все это предъявляет еще больше требований к памяти. Производители процессоров пытались снизить задержки связанные с памятью за счет больших по размеру и более умных CPU-кешей, более быстрых шин и соединений. Но проблема со stalled-состоянием все еще не решена.
Как понять, что процессор на самом деле делает
Сделать это можно используя Performance Monitoring Counters (PMC-счетчики): хардверные счетчики, которые могут быть прочитаны с помощью Linux pref (пакет linux-tools-generic в Линуксе) и других утилит. Для примера понаблюдаем за всей системой в течение 10 секунд:
Ключевая метрика здесь instructions per cycle (insns per cycle: IPC, число инструкций за один цикл), которая показывает сколько в среднем инструкций было выполнено за каждый такт. Чем больше, тем лучше. В примере выше значение 0.78 кажется очень неплохим (нагрузка 78%?) до тех пор пока вы не узнаете, что максимальная скорость процессора это IPC 4.0. Такие процессоры называют 4-wide, это название пошло от особенностей пути извлечения/декодирования инструкций в процессоре (подробнее об этом в Википедии).
Существуют сотни PMC-счетчиков, которые позволяют детальнее разобраться с производительностью системы, например, посчитать число приостановленных циклов по типам.
В облаках
Если вы работаете в виртуальном окружении, то вероятно у вас нет доступа к PMC-счетчикам, это зависит от поддержки этой фичи гипервизором. Я недавно писал о том, что PMC-счетчики теперь доступны в AWS EC2 в виртуальных машинах базирующихся на Xen.
Как интерпретировать и что делать
Если ваш IPC 1.0, то вероятно, вы ограничены числом инструкций, которые может выполнять процессор. Попробуйте найти способ уменьшить число выполняемых инструкций: уменьшить число ненужной работы, кешировать операции и т.п. CPU flame графы — отличная утилита для этих целей. С точки зрения тюнинга железа, попробуйте использовать процессор с большей тактовой частотой и большим числом ядер и гипертредов.
Для моих правил выше я выбрал значение IPC 1.0, почему именно его? Я пришел к нему из своего опыта работы с PMC-счетчиками. Вы можете выбрать для себя другое значение. Сделайте два тестовых приложения, одно упирающееся по производительности в процессор, другое — в память. Посчитайте IPC для них и возьмите среднее значение.
Что инструменты мониторинга производительности должны сообщать вам?
Другие причины почему CPU utilization вводит в заблуждение
Проблема со stalled-циклами может быть не только в задержках связанных с памятью:
— изменение температуры может влиять на приостановленность процессора,
— турбобуст может менять тактовую частоту процессора,
— ядро варьирует частоту процессора с определенным шагом,
— проблема с усреднением: 80% нагрузки в течение минуты скроет кратковременный всплеск до 100%,
— спинлоки: процессор нагружен, имеет высокий IPC, но приложение ничего не делает.
Заключение
Нагрузка на процессор (CPU utilization) это обычно неправильно интерпретируемая метрика, так как она включает циклы, потраченные на ожидание ответа от основной памяти, которые могут доминировать в современных нагрузках. Вы можете понять что на самом деле стоит за %CPU используя дополнительные метрики, включая число инструкций за цикл (IPC). Если IPC 1.0, то в скорость процессора. Я писал про IPC в своем предыдущем посте, в том числе написал и о использовании PMC-счетчиках, необходимых для измерения IPC.
Инструменты мониторинга производительности, которые показывают %CPU должны показывать PMC-счетчики, чтобы не вводить пользователей в заблуждение. Например, они могут показывать %CPU с IPC и/или число instruction-retired и stalled циклов. Вооруженные этими метриками разработчики и админы могут решить как правильнее тюнинговать их приложения и системы.
Анализ ключевых показателей производительности — часть 3, последняя, про системные и сервисные метрики
Мы заканчиваем публикацию перевода по тестированию и анализу производительности от команды Patterns&Practices о том, с чем нужно есть ключевые показатели производительности. За перевод спасибо Игорю Щегловитову из Лаборатории Касперского. Остальные наши статьи по теме тестирования можно найти по тегу mstesting
В первой статье цикла по анализу ключевых показателей производительности мы наладили контекст, теперь переходим к конкретным вещам. Во второй посмотрели на анализ пользовательских, бизнесовых показателей/метрик и показателей, необходимых к анализу внутри приложения. В этой, заключительной — про системные и сервисные (в т.ч. зависимых сервисов) метрики.
Итак,
Системные метрики.
Системные метрики позволяют определять, какие системные ресурсы используются и где могут возникать конфликты ресурсов. Эти метрики направлена на отслеживание ресурсов уровня машины, таких как память, сеть, процессор и утилизация диска. Эти метрики могут дать представление о внутренних конфликтах лежащих в основе компьютера.
Вы также можете отслеживать данные метрики для определения аспектов производительности – нужно понимать, если ли зависимость между системными показателями и нагрузкой на приложение. Возможно, вам потребуются дополнительные аппаратные ресурсы (виртуальные или реальные). Если при постоянной нагрузке происходит увеличение значений данных метрик, то это может быть обусловлено внешними факторами — фоновыми задачами, регулярно-выполняющимися заданиями, сетевой активностью или I/O устройства.
Как собирать
Вы можете использовать Azure Diagnostics для сбора данных диагностики для для отладки и устранения неполадок, измерения производительности, мониторинга использования ресурсов, анализа трафика, планирования необходимых ресурсов и аудита. После сбора диагностики ее можно перенести в Microsoft Azure Storage для дальнейшей обработки.
Другой способ для сбора и анализа диагностических данных — это использование PerfView. Этот инструмент позволяет исследовать следующие аспекты:
Изначально PerfView был предназначен для локального запуска, но теперь он может быть использован для сбора данных из Web и Worker ролей облачных сервисов Azure. Вы можете использовать NuGet-пакет AzureRemotePerfView для установки и запуска PerfView удаленно на серверах ролей, после чего скачать и проанализировать полученные данные локально.
Windows Azure Diagnostics и PerfView полезны для анализа используемых ресурсов “постфактум”. Однако, при применении таких практик как DevOps, необходимо мониторить “живые” данные производительности для обнаружения возможных проблем производительности еще до того, как они произойдут. APM-инструменты могут предоставлять такую информацию. Например, утилиты Troubleshooting tools для веб-приложений на портале Azure могут отображать различные графики, показывающие память, процессор и утилизацию сети.
На портале Azure есть “health dashboard”, показывающий общие системные метрики.
Аналогичным образом, панель Diagnostic позволяет отслеживать заранее настроенный набор наиболее часто используемых счетчиков производительности. Здесь вы можете определить специальные правила, при выполнении которых оператор будет получать специальные нотификации, например, когда значение счетчика сильно превысит определенное значение.
Веб-портал Azure может отображать данные о производительности в течении 7 дней. Если вам нужен доступ данных за более длительный период, то данные о производительности нужно выгружать напрямую в Azure Storage.
Websites Process Explorer позволяет вам просматривать детали отдельных процессов запущенных на веб-сайте, а также отслеживать корреляции между использованием различных системных ресурсов.
New Relic и многие другие APM имеют схожие функции. Ниже приведено несколько примеров.
Мониторинг системных ресурсов делится на категории, которые охватывают утилизацию памяти (физической и управляемой), пропускную способность сети, работу процессора и операции дискового ввода вывода (I/O). В следующих разделах описано, на что следует обратить внимание.
Использование физической памяти
Существует две основные причины ошибки OutOfMemory – процесс превышает выделенное для него пространство виртуальной памяти либо операционная система оказывается неспособной выделить дополнительную физическую память для процесса. Второй случай является самым распространенным.
Вы можете использовать описанные ниже счетчики производительности для оценки нагрузки на память:
Также следует учитывать, что большие объемы памяти могут привести к фрагментации (когда свободной физической памяти в соседних блоках недостаточно), поэтому система, которая показывает, что имеет достаточно свободной памяти, может оказаться не в состоянии выделить эту память для конкретного процесса.
Многие APM-инструменты предоставляют сведения об использовании процессами системной памяти без необходимости глубокого понимания о принципах работы памяти. На графике ниже показана пропускная способность (левая ось) и время отклика (правая ось) для приложения, находящегося под постоянной нагрузкой. Примерно после 6 минут производительность внезапно падает, и время отклика начинает “прыгать”, по прошествии нескольких минут происходит показателей.
Результаты нагрузочного тестирования приложения
Записанная с помощью New Relic телеметрия показывает избыточное выделение памяти, которое вызывает сбой операций с последующим восстановлением. Использованная память растет за счет файла подкачки. Такое поведение является классическим симптомом утечки памяти.
Телеметрия, показывающая избыточное выделение памяти
Примечание: В статье Investigating Memory Leaks in Azure Web Sites with Visual Studio 2013 содержится инструкция, показывающая как использовать Visual Studio и Azure Diagnostics для мониторинга использования памяти в веб-приложении в Azure.
Использование управляемой памяти
.NET приложения используют управляемую память, которая контролируется CLR (Common Language Runtime). Среда CLR проецирует управляемую память на физическую. Приложения запрашивают у CLR управляемую память, и CLR отвечает за выделение требуемой и освобождение неиспользуемой памяти. Перемещая структуры данных по блокам, CLR обеспечивает компоновку этого типа памяти, уменьшая тем самым фрагментацию.
Управляемые приложения имеют дополнительный набор счетчиков производительности. В статье Investigating Memory Issues содержится детальное описание ключевых счетчиков. Ниже описаны наиболее важные счетчики производительности:
CPU utilization
Смотреть что такое «CPU utilization» в других словарях:
CPU bound — In computer science, CPU bound (or compute bound) is when the time for a computer to complete a task is determined principally by the speed of the central processor: processor utilization is high, perhaps at 100% usage for many seconds or minutes … Wikipedia
CPU cache — Cache memory redirects here. For the general use, see cache. A CPU cache is a cache used by the central processing unit of a computer to reduce the average time to access memory. The cache is a smaller, faster memory which stores copies of the… … Wikipedia
Avaya Unified Communications Management — Developer(s) Nortel (now Avaya) Operating system MS Windows, and Linux Type Unified Communications Configuration and Management Avaya Unified Communications Management in computer networking is the name of a collection o … Wikipedia
Ganglia — Страница статистики серверов … Википедия
Tagged Command Queuing — (TCQ) is a technology built into certain ATA and SCSI hard drives. It allows the operating system to send multiple read and write requests to a hard drive. ATA TCQ is not identical in function to the more efficient Native Command Queuing (NCQ)… … Wikipedia
Rate-monotonic scheduling — In computer science, rate monotonic scheduling [citation|first1=C. L.|last1=Liu|authorlink1=Chung Laung Liu|first2=J.|last2=Layland|title=Scheduling algorithms for multiprogramming in a hard real time environment|journal=Journal of the ACM|volume … Wikipedia
Norton AntiVirus — Developer(s) Symantec Corporation Stable release … Wikipedia
Direct memory access — (DMA) is a feature of modern computers that allows certain hardware subsystems within the computer to access system memory independently of the central processing unit (CPU). Without DMA, the CPU using programmed input/output is typically fully… … Wikipedia
Peer-to-Peer Protocol (P2PP) — Application layer protocol that can be used to form and maintain an overlay among participant nodes. Provides mechanisms for nodes to join, leave, publish, or search for a resource object in the overlay. Maintaining information about nodes in… … Wikipedia
GPU Utilization
This page provides information about the Utilization rollout available under the Performance tab when the production render is V-Ray GPU.
Overview
The Utilization rollout gives access to the Progressive render settings in both production and IPR modes. You can control the ray size(s), its trace depth and set a low thread priority of the rendering.
UI Path: ||Render Setup window|| > Performance tab > Utilization rollout
Parameters
Rays per pixel – The number of rays that are traced for each pixel during one image pass in Production rendering mode. The greater the value, the smoother the picture from the very beginning of the rendering with GI, but interactivity might be significantly diminished. Increasing this value also reduces the amount of data transferred from the render servers back to the client machine when using Distributed Rendering.
IPR Rays per pixel – The number of rays traced for each pixel during one image pass in IPR mode.
Rays bundle size – Controls the number of rays that are sent to the render servers for processing. When using Distributed Rendering, smaller values cause more frequent client/server communication with smaller network packets, thus decreasing the speed of the renderer but increasing the interactivity. Conversely, larger values increase the speed of the renderer but decrease interactivity. Note that this number is not the exact amount of rays, but is proportional to it. It is not recommended to increase this value beyond 512.
Undersampling – When enabled, IPR starts rendering the image at a lower resolution in order to speed up the initial preview. Later the image is rendered at its final resolution.
Trace depth – Represents the maximum number of bounces that are computed for reflections and refractions. The individual material reflection/refraction depth settings are still considered, as long as they don’t exceed the value specified here.
Low GPU thread priority – When enabled, V-Ray tries to lessen the load on GPUs working on displaying graphics to the monitor(s) in order to give them more resources to complete other processes and tasks for the OS. This is done by internally using a lower value for Rays bundle size for those GPUs with attached displays (Rays per pixel is still the same for all GPUs). This can affect the overall performance, and the render speed might be reduced. It is recommended to utilize a separate GPU for the display, if possible.
Out-of-core (WIP) – Enables an experimental feature for evicting triangle meshes out of the GPU memory when they are no longer needed in order to make room for other resources, once the renderer has run out of memory. This option is available only for CUDA and is not yet supported for RTX.
When Out-of-core (WIP) is enabled, V-Ray GPU excludes the C++/CPU device from rendering by design.