Лаг что это в программировании

Лаг (компьютерный сленг)

Содержание

Лаг в сетевых играх

Основной причиной лагов является время, необходимое на передачу информации от клиента к серверу и обратно. Это связано со скоростью соединения и загруженностью каналов на всём протяжении от клиента к серверу. Также немалую роль играет расстояние между клиентом и сервером, в отношении количества точек доступа и узлов. Строго говоря, каждый передаваемый пакет доставляется с задержкой, однако лагами обычно называют только ощутимые задержки, которые мешают нормальной игре. При этом восприятие лагов игроками зависит от многих факторов, прежде всего связанных с необходимой в данный игровой момент точностью и временем реакции [1]

Тормоза (не лаги)

В ранних видеоиграх было принято синхронизировать просчёт физики с частотой кадров. Каждая игровая система обновляла изображение фиксированное число раз в секунду. Для телевизионных приставок эта частота равна частоте кадров телевизора. За период между обновлениями экрана игра совершает все необходимые вычисления для обеспечения игрового процесса (в том числе, опрос устройств ввода (англ.)). В случае слабой вычислительной мощности системы или непредусмотренных действий игрока программа может не успеть произвести все необходимые вычисления в отведённое время до обновления экрана. Тогда все оставшиеся действия (в том числе обновление картинки) переносятся на следующий кадр. При этом снижается не только частота обновления экрана, но и частота опроса пользовательского ввода.

Современные игры используют переменную частоту кадров для устранения видимых задержек анимации. При этом обработка физики и отрисовка картинки происходят по отдельности, обычно с разной частотой. Игра рисует между кадрами обновления физики промежуточные состояния объектов. Слабость компьютера либо чрезмерность вычислений компенсируются в первую очередь снижением частоты отрисовки изображения, а частота опроса ввода и обработки физики не уменьшается. В результате динамика игры остаётся прежней, но изображение становится менее плавным. В случае же, если снижения частоты вывода изображения не достаточно, даже современной игре приходится снижать частоту обработки физики и опроса ввода, что приводит к ощутимым задержкам реагирования игры на действия игрока.

Источник

Что такое Input Lag и как он влияет на впечатления от игры

Объясняем и показываем, как устроен Input Lag и почему это важно.

Абрикос Абрикосовый для Skillbox Media

Input Lag — задержка ввода. Время, которое проходит с момента получения команды до отображения того или иного действия на экране. После нажатия кнопки на контроллере электронике требуется время на просчёт сигнала и вывода картинки на дисплей — из-за этого и происходит задержка ввода.

Как устроен Input Lag?

Задержка ввода состоит из обработки сигнала контроллером, компьютером и дисплеем.

Объяснение от NVIDIA

Сценарист и копирайтер. Утверждает, что видел все фильмы и прошёл все игры, но редакция отказывается ему верить.

Для кого важен Input Lag?

Максимально важен для киберспортивных дисциплин — шутеров, файтингов, MOBA. Запаздывание реакции персонажа на команды влияет на соревнования не меньше, чем скорость реакции игрока. Input Lag — один из важнейших параметров в киберспорте наравне с частотой кадров в секунду. Про FPS мы писали ранее в другой статье.

Киберспортсмен Джордан n0thing Гилберт объясняет важность низкого Input Lag

Задержка ввода влияет на регистрацию выстрелов, низкий лаг позволяет делать фликшоты — это техника, при которой игрок в шутере очень резко целится во врага и метко стреляет.

В соревновательных дисциплинах существует понятие Peeker’s Advantage — преимущество подглядывающего. Заглядывающий за угол игрок имеет преимущество перед противником с другой стороны, что влияет на тактику в шутерах. Peeker’s Advantage зависит от задержки ввода.

Как снизить Input Lag?

Input Lag не прописывают в официальных спецификациях, параметр меняется в зависимости от «железа». На любом ПК есть несколько способов снизить лаг:

Чтобы снизить Input Lag на ТВ и консоли, следует отключить все программные средства улучшения видеосигнала — например, искусственное повышение плавности в динамичных сценах. По умолчанию все подобные параметры включены.

На время считывания данных из буфера кадров влияет скорость обновления дисплея. У монитора с высокой скоростью обновления задержка будет меньше.

Стоит использовать соответствующее ЖК-панели разрешение. Например, лаг повышается, если 4К-монитор сжимает изображение до Full HD.

Во многих современных телевизорах есть особый игровой режим. При подключении консоли используйте вход HDMI Game.

Для большей скорости отклика на любой платформе имеет смысл отключить HDR — о том, как устроен высокий динамический диапазон, мы писали в другом материале.

Производители «железа» разрабатывают технологии, специально заточенные под киберспорт. Например, NVIDIA Reflex измеряет и оптимизирует задержки системы в соревновательных играх.

Источник

Лагом и продуктивность без стресса

«Lagom är bäst» гласит шведская пословица — «нужное количество лучше».

Лагом — это практически то, что и в финском «Sopivasti» — «в самый раз», a в норвежском «Passelig» — «подходящий, соответствующий».

Лагом — шведская философия жизни, философия умеренности. Это отказ от стремления к совершенству, в пользу жизни без стресса и умение жить своей жизнью, принимая ее несовершенство, находя в ней моменты для радости.

“Julia”, семиметровая арт-работа, выполненная из чугуна около арт-кампуса Университета Умео

Еще викинги, передавая по кругу кубок, по правилу «laget om» (вокруг команды) старались отпить из него ровно столько, чтобы всем досталось поровну. Так и появился лагом, “достаточный”, “в самый раз”.

Для кого-то лагом похож на минимализм и в некоторой степени они взаимосвязаны, но все же лагом — это больше про умеренность: в вещах, во взглядах, в еде, в самовыражении.

Это умеренность не только в количестве вещей, но и в делах. Лагом предполагает баланс рабочего и личного времени, при котором работа не сказывается отрицательно на качестве жизни. Это избавление от лишнего, от того, что отвлекает наше внимание.

Это та гармония с собой и миром, которую многие из нас ищут.

Лагом в действии

Умение жить с минимумом вещей, не чувствуя привязанности к ним, желание избавиться от привычки нагружать себя большим количеством задач (не всегда важных) были давней моей мечтой, идеальным образом жизни.

Переехав недавно в Швецию, город Умео, я поняла, что это тот удачный случай, чтобы научиться лагому, перенять у шведов их философию неспешной, умеренной жизни, притом эффективной в делах.

Умео

Умео — небольшой провинциальный шведский городок, утопающий в лесах и природном изобилии, с населением всего лишь 115,0 тыс. жителей, около трети из которых — студенты. Именно здесь мне открылась философия лагом.

Для шведов лагом — это идеальное состояние баланса потребностей и желаний.

Умея эффективно управлять своим временем, они также уважают и чужое время. Поэтому здесь так важно соблюдение правил, а значит проявление заботы о других.

Одним словом шведы стараются избегать всего, что привносит в жизнь дисбаланс и нарушает привычный ход дел.

Являясь одними из самых счастливых людей на Земле ( в 2020 г. Швеция заняла 6 место в рейтинге “счастливых” стран ) шведы умеют не только эффективно работать, но и находить время для отдыха даже в рабочее время.

Поэтому традиционный перерыв на фику (“fika” — своеобразный кофе-брейк, каждые два часа, не более чем на 15 минут) не сказывается отрицательно на продуктивности работы офиса. И что интересно, после добросовестно отработанного рабочего времени, шведы редко остаются сверхурочно.

Чтобы приблизиться к образу жизни шведов и почувствовать его на себе, нужно бывать в тех местах, где они любят бывать и правильно планировать время — так как это делают они.

Умео — это город студентов, в нем существует немало мест, вдохновляющих на продуктивность и учебу и приспособленных самими студентами для этих целей. Эти места я посетила лично.

Университетская библиотека Умео— Umeå universitetsbibliotek, где студенты уже с 8 утра занимают места и, попивая кофе, сосредоточенно работают над проектами.

Зал Umeå universitetsbibliotek

Здесь немало всевозможных рабочих мест с доступом в интернет для успешной работы и учебы.

Всё это и заставило меня по другому посмотреть на привычный мне образ жизни. Действительно, в современном мире мы часто заняты лишь достижением целей, забывая о себе.

У нас всегда есть задачи и все справляются с ними как умеют. Одни решают их постепенно, другие мечутся, не зная за что взяться в первую очередь.

Ко всему этому еще часто добавляется многозадачность. И так много пунктов нужно выполнить, но теперь еще и одновременно.

Так ли эффективна многозадачность?

До сих пор нет доказательств, что умение делать одновременно как можно больше вещей определенно лучше работы над одной задачей.

Более того, ученые считают многозадачность “мифической деятельностью” и “умышленным отвлечением внимания”.

Порой мы чувствуем, что провели день очень продуктивно, хотя на самом деле просто успели сделать за день большое количество дел. Но количество не всегда значит качество, как и то, что было ли это эффективно.

“Вынужденный реагировать на несколько стимулов одновременно, наш мозг теряет драгоценное время, переключаясь между задачами и решая, что выполнить вперед” — по исследованиям с использованием фМРТ психологом Рене Маруа из Университета Вандербильта штата Теннеси.

Проще говоря, берясь сразу за несколько дел одновременно, мы теряем время, не зная, за что браться сначала и распыляем своё внимание.

Маруа обнаружил, что за процесс принятия решения в мозгу человека отвечают “узкие места” (bottleneck). Эти участки ограничивают пропускную способность мозга: то, что мы воспринимаем и как действуем в условиях многозадачности.

Многозадачность ≠ продуктивность

Диаграмма наглядно показывает, насколько сильно возрастает время реакции, в случае с выполнением двух заданий одновременно (Dual-task) по сравнению с тем, когда задача была одна (Single-Task)

Эксперимент состоял из двух частей. В первой части участникам были даны следующие задания:

Аудиально-вокальное (AV) — предъявлялся один из трех слуховых стимулов, каждый из которых требовал вокального ответа с разной скоростью.

Визуально-мануальное (VM) — предъявлялось одно из трех лиц, каждое из которых требовало различной скорости ручной реакции.

Во второй части эксперимента испытания проводились с двумя задачами, в которых участники выполняли эти два задания одновременно.

Таким образом, ученые пришли к выводу: “Многозадачность ≠ продуктивность” или проще говоря, “лучше меньше, но качественнее”.

Я знаю, многие бросают на полпути дело, не доведенное до конца и берутся за следующее. А потом чувствуют тревогу и незаконченность действия. Корят себя за слабоволие.

Так стоит ли браться за несколько дел одновременно?

Большие списки дел определенно не дают результата, а лишь сбивают с толка.

Лично мне хотелось бы жить по лагому, успевая делать важное, не теряя душевной гармонии.

Правила лагом жизни

Элизабет Карлссон, автор книги “Лагом. Шведский стиль жизни” рассказала о том, как обрести ту самую гармонию (The Lagom Life: A Swedish Way of Living, Elisabeth Carlsson) :

Взгляните на свою жизнь со стороны. Подумайте, что поможет вам избавиться от лишнего стресса и сделает вас счастливее. Добавьте в свою жизнь больше того, что дарит позитив и по возможности избавляйтесь от негатива.

Измените образ мышления. Вместо того чтобы стремиться к идеалу, лучше спросите себя: “Достаточно ли для счастья того, что у меня есть?”

Старайтесь находить радостные моменты в мелочах: любимая музыка, общение с друзьями, вкусная еда, прогулка на природе.

Освободите пространство от ненужных вещей и совершайте осознанные покупки. Пусть это будут самые любимые и необходимые вещи, приносящие пользу и радующие глаз.

Обязательно делайте перерывы. Для этого идеально подойдут как фика, так и прогулка на свежем воздухе.

Помогайте другим. Принимайте активное участие в общественной жизни, делайте добрые дела и делитесь счастьем с окружающими. Помогая другим, мы чувствуем себя увереннее, перестаем фокусироваться на своих проблемах и видим мир шире.

Все эти советы определенно помогают навести порядок в мыслях, ведь с него и начинается порядок в жизни и делах.

Планируй без стресса или чему учит лагом

Применяя эти правила, в жизни освобождается больше пространства и времени для главных вещей. Правильно расставленные приоритеты упорядочивают дела, оставляя место для отдыха.

Всё это в итоге помогает достигнуть эффективности в решении задач, а самое главное улучшить качество жизни и снизить стресс.

Основное, что стоит вынести из философии лагом:

Не спешить.

Важно остановиться и оценить задачу, дать себе время. Например, мой коллега не торопится сразу принимать решение в тех делах, которые не требуют сиюминутного исполнения. Он берет время на обдумывание и затем появляется ответ, мозг сам подсказывает лучшее решение.

Выделять главное.

Лично мне помогает выписывать идеи или задачи на лист бумаги и уже имея перед глазами записи оценить, что действительно стоит внимания.

Соблюдать баланс работы и отдыха.

Отдых, каким бы он ни был: сон, спорт, хобби, встречи с друзьями — это то, что дает энергию, помогает восполнять силы, избавляет от стресса, и все это положительно влияет на продуктивность.

Лагом определенно может помочь стать счастливее, обрести умиротворение. Ведь недаром существует мудрое высказывание «Счастье — это не пункт назначения, это образ жизни».

Мне и нашей команде Календаря Tweek оказалась близка философия лагом в планировании дел без стресса. Эта схожесть проявляется в простоте, минимализме, умеренности. Именно поэтому мы решили рассказать вам о лагом

Tweek Календарь

Источник

Input lag во время рендеринга и как его побеждать

Привет всем. Многие из вас знакомы с лагом ввода. Это бывает, когда вас в очередной раз убивают в компьютерной игре, и вы кричите: «Ну я же нажал блок/атаку/уворот». Ну а затем джойстик летит в стену. Знакомо? Происходит это потому, что между нажатием клавиш и появлением результата на экране проходит значительное время. Фактически, когда вы смотрите в экран — вы видите прошлое состояние, которое может абсолютно не отражать действительность.

Если вы разрабатываете собственную игру, или вообще занимаетесь рендером, и хотите уменьшить задержки ввода, то крайне советую заглянуть под кат.

Итак, Input lag в любой игре складывается из:

CPU + GPU

Современные GPU — устройства максимально асинхронные. CPU отдает команды видеодрайверу, и идет заниматься своими делами. Драйвер накапливает команды в пачки, и пачками отправляет на видеокарту. Видеокарта рисует, а CPU в это время занимается своими делами. Максимальный FPS, который вы можете получить в этой системе ограничен одним из условий:

1. CPU не успевает отдавать команды видеокарте, потому что видеокарта очень быстро рисует. И нафига вы покупали такую мощную видеокарту?

2. Видеокарта не успевает рисовать то, что дает ей CPU. Теперь CPU халявит…

Для того, чтобы посмотреть, как красиво в паре работает CPU и GPU — есть различные профайлеры. Мы воспользуемся GPUView, который идет в составе Windows Performance Toolkit.

Лог от GPUView может выглядеть как-то так:

Вертикальные синие линии — это VSync. Наваленные горы кубиков — это горы пакетов, которые отправятся на видеокарту, когда та освободится. Штрихованный кубик — это пакет, содержащий переключение буферов. Иными словами — конец кадра. Любой кубик можно выбрать, и видеть, как он постепенно опускается в стопке, и отправляется на видеокарту. Видите на скриншоте кубик с желтой обводкой? Он обрабатывался аж на протяжении 3-х vsync-ов. А целый кадр занимает около 4-х VSync-ов (судя по расстоянию между разными штрихованными кубиками). Между двумя горами пакетов от разных кадров есть маленький зазор. Это то время, пока GPU отдыхал. Этот зазор маленький, и оптимизация на стороне CPU не даст большого выйгрыша.

Но бывают зазоры большие:

Это пример рендера из World of Warcraft. Расстояния между пакетами в очереди просто огромные. Более мощная видеокарта не даст прироста ни одного FPS. Зато если оптимизировать рендер на стороне CPU, то можно получить более чем двукратный прирост FPS на данном GPU.

Чуть более подробно можно почитать тут, а мы пойдем дальше.

Так где же лаг?

Так уж сложилось, что разрыв в производительности между Hi-End и Low-End видеокартами поистине огромен. Поэтому у вас обязательно будут возникать обе ситуации. Но самая грустная ситуация — это когда GPU не справляется. Выглядеть это начинает вот так:

Обратите внимание, сколько времени заняла обработка одного пакета. Кадр занимает 4 VSync-а, а обработка пакета занимает в 4 раза дольше! DirectX (OpenGL ведет себя так же) накапливает данных аж на 3 кадра. Но ведь когда мы кладем в очередь свежий кадр — все предыдущие кадры для нас уже не актуальны, а видеокарта по прежнему будет тратить время на отрисовку. Поэтому наше действие появится на экране спустя аж 3 кадра. Давайте посмотрим, что мы можем сделать.

1. Честное решение. IDXGIDevice1::SetMaximumFrameLatency(1)

Я честно, не представляю зачем копить данных на 3 кадра в буфере. Но MS видимо поняла ошибку, и начиная с DX10.1 у нас появилась возможность задать это количество кадров через специальный метод IDXGIDevice1::SetMaximumFrameLatency. Давайте посмотрим, как нам это поможет:

Ну что же. Стало значительно лучше. Но по прежнему не идеально, т.к. все равно ждем 2 кадра. Еще один недостаток решения — то что оно работает только для DirectX.

2. Трюк с ID3D11Query

Идея заключается в том, что в конце кадра мы устанавливаем D3D11_QUERY_EVENT. В начале следующего кадра — ждем, постоянно проверяя событие, и если оно прошло, то только тогда начинаем отдавать команды на отрисовку, и с наисвежайшими Input данными.

Картина практически идеальная, не находите? Ожидание я реализовал вот так:

Установка эвента тривиальна:

Ну и в сам рендер добавляем вначале ожидание. Затем перед самой отрисовкой собираем свежие Input данные, а перед самым Present-ом устанавливаем евент:

Недостаток костыля метода — работает только с DirectX. Но можно дождаться синхронизации другим оригинальным способом.

3. Воркэраунд через текстуру

Вот что мы делаем. У нас есть механизмы прочитать данные из видеоресурсов. Если мы заставим видеокарту что-то нарисовать, а потом попытаемся забрать, то произойдет автоматическая синхронизация между GPU-CPU. Мы не сможем забрать данные раньше, чем они будут нарисованы. Поэтому вместо установки евента я предлагаю генерить мипы на видеокарте для текстуры 2*2, а вместо ожидания евента — забирать данные из этой текстуры в системную память. В результате подход выглядит так:

Вот так мы ожидаем евент:

а вот так его устанавливаем:

В остальном подход полностью аналогичен предыдущему. Преимущество: работает не только на DirectX но и на OpenGL. Недостаток — маааленький оверхед на генерацию текстуры и передачу данных назад + потенциально потраченное время на «пробуждение» потока шедулером операционной системы.

Про попробовать

Конечно я тут растекался по дереву… но насколько проблема серьезная? Как пощупать это? Я написал специальную демонстрационную программу (требует DirectX11).

Скачать *.exe можно здесь. Для тех, кто боится качать билды неизвестного производителя — исходный код lazarus проекта здесь (также потребуется моя библиотека фреймворк AvalancheProject, которая находится вот тут)

Программа представляет собой такое окно:

Тут рисуется 40*40*40=64000 (кстати каждый кубик — отдельный дравколл). GPU workload трекбар дает нагрузку на GPU (с помощью бесполезного цикла в вершинном шейдере). Просто опускаете с помощью этого трекбара фпс до низкого уровня, скажем 10-20, а потом пробуете правой кнопкой мыши крутить кубики, и переключать методы уменьшения Input лага с помощью радиобаттонов.

Вы только оцените какая огромная разница в скорости отклика. C Query Event комфортно крутить кубик даже при 20 фпс.

Источник

Использование задержек (лагов)

Для достижения большей гибкости при разработке сетевых графиков было придумано использование задержек (лагов).

1. Когда более продолжительные операции задерживают начало или завершение последующих операций, то разработчик сетевого графика, как правило, разбивает такую операцию на более мелкие операции, чтобы избежать большого отставания последующей операции. Использование лагов помогает избежать такого отставания и уменьшает потребность в детализации сетевого графика.

2. Лаги могут использоваться для ограничения времени начала и окончания операции.

Наиболее часто используются расширения методов через использование между операциями отношений типа «от конца к началу», «от конца к концу» или «от начала к началу».

Отношения типа «от конца к началу».

Бывают такие ситуации, когда последующая операция в цепочке должна быть задержана, даже если предшествующая операция завершена.

Например, выемка бетонных форм не может начаться, пока залитый цемент не будет выдержан в течение двух единиц времени. рис. 2.10 показывает этот лаг для сетевого графика типа ОУ.

Рис. 2.10.Отношения «от конца к началу»

Отношения «от начала к началу».Альтернативой делению операций является использование отношений типа «от начала к началу». Типичные отношения «от начала к началу» показаны на рис. 2.11. На рис. 2.11А показаны отношения старт-старт с нулевым лагом, тогда как на рис. 2.11В показаны те же самые отношения с лагом 5 единиц времени.

Рис. 2.11.Отношения «от начала к началу»

На рис. 2.11В операция Q не может начаться раньше, чем пройдет время в 5 единиц после начала операции Р.

Отношения типа «от начала к началу» с небольшим лагом дают возможность осуществлять последовательные операции параллельно и сокращать общую продолжительность критического пути.

Отношения «от конца к концу».Этот тип отношений можно видеть на рис. 2.12. Окончание одной операции зависит от окончания другой. Например, испытания не могут завершиться раньше, чем через 4 дня после завершения работ над прототипом.

Рис. 2.12.Отношения «от конца к концу»

Отношения «от начала к концу».Эти отношения представляют ситуацию, когда завершение одной операции зависит от начала другой операции. Например, документирование системы не может завершиться пока не пройдут три единицы времени после начала испытания (см. рис. 2.13).

Рис. 2.13.Отношения «от начала к концу»

Комбинация отношений задержки. Одна и та же операция может оказаться связанной с другой сразу несколькими отношениями задержки разных типов. Например, отладка программного обеспечения не может начаться, пока не пройдут две единицы времени после начала написания кода программы. Кодирование же должно завершиться за 4 единицы времени до окончания отладки (см. рис. 2.14).

Рис. 2.14.Комбинация отношений задержки

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • Лавасофт что это за программа
  • Лавасофт web companion что это за программа
  • лабораторная работа администрирование windows 10
  • лабораторная работа no2 интерпретатор командной строки ос ms windows
  • Лаборатория лайф тайм что это за программа

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии