|
|
|
Канал Игры Мечты: «Что такое real-time» |
|
|
Diff
708 EGP
      Рейтинг канала: 2(11) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
Ну рилтайм тоже появился не в связи с геймдевом. Я уж не говорю о том, что TBS довольно сложно характеризовать как real-time задачу. А вот GSM-пакет, например, должен быть обработан в течение таймслота в 125 мкс. Если не успел - выбрасывается на мороз.
Но согласен, что довольно бессмысленно обсуждать неизвестную проблему, возникшую перед неуловимым неизвестным Джо при проектировании неизвестной игры и потребовавшую неизвестно каких аллокаторов.
Minx : |
Можно банально экономить память
|
Так это ж наверняка просадит производительнось.
_________________ Конец света в конце тоннеля
Последний раз редактировалось: Diff (21:02 27-09-2015), всего редактировалось 1 раз |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Diff : |
Ну рилтайм тоже появился не в связи с геймдевом.
|
Причина требований к производительности - real-time. При чем тут первое до геймдева?
Diff : |
Я уж не говорю о том, что TBS довольно сложно характеризовать как real-time задачу.
|
В TBS как и любой другой программе, где человек не любит ждать, есть требования real-time. Естественно намного более слабые, нежели в каком-нибудь 3D Action. Например, будет очень плохо если игра будет грузиться 10 минут на топовой машине, минуту делать save, а ход ждать бесконечность.
По поводу производительности TBS мне вспоминается интересный древний пример игры Chessmaster 2000, где в качестве уровня сложности можно было задавать время сколько думает компьютер (например 3 секунды). Что прикольно, когда мы играли на EC-1841, то не без труда, но обыгрывали. Но если его же запустить на тройке, то он всех рвал просто в тряпки. И ещё, эта программа думала в то время, когда думал игрок. Поэтому если играть быстро, то копьютер думал хуже.
Это в качестве примера того, как в TBS могут решаться проблемы AI-real-time. AI можно сделать чуть более глупым, что не сложно, и от этого игра особо не пострадает.
Поэтому пример AI от Джо мне не нравится. Но вот когда ему нужно было делать Braid'a для X-Box'a с жесткими требованиями, то это уже намного понятнее.
Diff : |
Так это ж наверняка просадит производительнось.
|
В современных системах cache miss может замедлить на 2 порядка. Если вписаться в кэш, то такого штрафа не будет.
Мы ~ 1.5 года назад оптимизировали высоконагруженную систему, и по этому фактору удалось поднять производительность ~ в 3 раза.
_________________ μηδείς αγεωμέτρητος εισίτω
Последний раз редактировалось: Minx (23:18 27-09-2015), всего редактировалось 1 раз |
|
|
Diff
708 EGP
      Рейтинг канала: 2(11) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
Minx : |
Причина требований к производительности - real-time. При чем тут первое до геймдева?
|
Это к тому что проблема не является специфичной для предметной области и существовала еще до оной области появления.
Minx : |
В TBS как и любой другой программе, где человек не любит ждать, есть требования real-time.
|
"Человек не любит ждать" - это НЕ real-time .
rt - это когда как в примере выше, если ответ пришел за 125 мкс - то все прекрасно и слышимость отличная, а если за 126 - то кваканье и слышно одно слово из трех. Переход количества в качество, таксказать. Точно так же видеоигра пропускает фреймы если железо не поспевает за игровыми событиями. Но это не в ТБС.
Не то чтобы я придираюсь, но давать собственные интерпретации устоявшимся терминам = увязнуть в дискуссии за корабли большого театра.
Minx : |
когда мы играли на EC-1841, то не без труда, но обыгрывали. Но если его же запустить на тройке, то он всех рвал просто в тряпки.
|
Та же фигня. Помню, это было большим разочарованием от апгрейда. Только я обыгрывал ЕС-1842!
Еще я долго искал под андроид похожую программу, которая как CM могла бы анализировать сыгранную партию и оценивать позиции соперников, но так и не нашел.
Minx : |
В современных системах cache miss может замедлить на 2 порядка.
|
И более. В системе над которой я щас работаю есть фича, которая не попавшие в кеш (не процессорный, конечно) данные может по сети(!) запулить в отстойник в другую звездную систему где они упадут на механический диск. Угадай, сколько там порядков разницы выходит.
Minx : |
оптимизировали высоконагруженную систему, и по этому фактору удалось поднять производительность ~ в 3 раза
|
Уменьшением объемов выделяемой памяти чтобы попасть в кэш? Круто. Но это не совсем экономия памяти - объемы кэша и озу несопоставимы. Это скорее оптимизация операций с памятью.
Я когда-то пытался этим заниматься, но без особого эффекта - объемы были великоваты.
Minx : |
Меня тут точно не обманываете?
|
Ну так сколько гениев, столько и непреложных истин.
_________________ Конец света в конце тоннеля |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Diff : |
"Человек не любит ждать" - это НЕ real-time
|
Real-time - это любые требования к времени исполнения.
Diff : |
rt - это когда как в примере выше, если ответ пришел за 125 мкс - то все прекрасно и слышимость отличная, а если за 126 - то кваканье и слышно одно слово из трех.
|
Это уже одни из требований real-time.
В деревянных шахматах между двумя людьми нет требований real-time. Поэтому TBS не обязательно имеет требования real-time. Но может и иметь.
Diff : |
Не то чтобы я придираюсь, но давать собственные интерпретации устоявшимся терминам = увязнуть в дискуссии за корабли большого театра.
|
Это вообще-то одна из интуитивных ошибок термина real-time.
В геймдеве противопоставляют turn based и real-time. Поэтому тут смысл real-time немного другой, а real-time TBS превращается в оксюморон.
Если взять ОСРВ, то там для real-time свои особенности (время реакции).
Если взять real-time для mission-систем, то там может быть важно как быстрее выполнить задачу (отреагировать на пуск ракеты).
В общем же случае, термин обозначает просто привязку к реальному времени, т.е. что нужно выполнять определенные требования во времени. А в зависимости от контекста эти требования могут быть очень разными.
Diff : |
В системе над которой я щас работаю есть фича, которая не попавшие в кеш (не процессорный, конечно) данные может по сети(!) запулить в отстойник в другую звездную систему где они упадут на механический диск. Угадай, сколько там порядков разницы выходит.
|
Чего гадать-то.. в той же книжке расписаны порядки:
• Registers & CPU cache: 1 nanosecond
• RAM: 10^2 nanoseconds
• Local drives: 10^5 to 10^7 nanoseconds
• Network: 10^6 to 10^9 nanoseconds
Diff : |
Уменьшением объемов выделяемой памяти чтобы попасть в кэш? Круто. Но это не совсем экономия памяти - объемы кэша и озу несопоставимы. Это скорее оптимизация операций с памятью.
Я когда-то пытался этим заниматься, но без особого эффекта - объемы были великоваты.
|
Можно назвать и так. Но основным действием в той оптимизации было уменьшение объемов используемой памяти.
_________________ μηδείς αγεωμέτρητος εισίτω
Последний раз редактировалось: Minx (14:22 28-09-2015), всего редактировалось 1 раз |
|
|
Diff
708 EGP
      Рейтинг канала: 2(11) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
Minx : |
Real-time - это любые требования к времени исполнения.
|
Рилтайм подразумевает выполнение в условиях изменяющегося окружения. Посчитать число пи до триллионного знака за секунду - это не рилтайм-задача. А система управления игрушечной (или настоящей) железной дорогой - да.
Minx : |
В деревянных шахматах между двумя людьми нет требований real-time.
|
А по твоей логике, есть. Время на матч.
По ней вообще любая программа - это СРВ. Даже notepad имеет требования по производительности.
Minx : |
Если взять ОСРВ, то там для real-time свои особенности (время реакции).
|
Не время реакции, а гарантированное время реакции. Например, у линукса время реакции меньше, чем у QNX. Но при этом QNX - ОСРВ, а линукс - нет.
Minx : |
В общем же случае, термин обозначает просто привязку к реальному времени, т.е. что нужно выполнять определенные требования во времени.
|
А поскольку вне времени мы ничего выполнять не умеем, то... в общем, ясно .
Minx : |
Чего гадать-то.. в той же книжке расписаны порядки:
|
Ну не все так грустно... Диск - это на самом деле один из 80 дисков в хитром рейде. А у сети пропускная способность повыше чем, например, у SATA3. Но все равно впечатляет решительность с которой данные засовываются в
_________________ Конец света в конце тоннеля |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Minx : |
Real-time - это любые требования к времени исполнения.
|
В каком ракурсе говорится о времени исполнения? Просто обычно это не real-time, а run-time.
_________________ У меня бисера не доxеpа. |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Guest : |
Это немного из другой категории вопрос. Я бы назвал такие позиции - разработка арт-проектов и коммершиал-проектов.
Арт требует времени и не обязан быть мегауспешным, но он будет запоминающимся.
Коммершиал должен отбить бабки, там время и все фичи по возможности усекаются и работает всё как в масс-продакшене.
|
У меня как бы и вопрос изначальный - в разности подходов к двум этим разным задачам.
Мне все ещё кажется, что они должны существенно различаться. Может быть, они мало различаются относительно инструмента (язык, организация, ..), но сильно с точки зрения идеологии (выбор идеи, сборка прототипов, ..)?
Diff : |
Рилтайм подразумевает выполнение в условиях изменяющегося окружения.
|
Мои слова как бы этого не отрицают (;
Но для real-time если есть какие-то требования привязки ко времени, то система становится real-time по этим требованиям.
Diff : |
А по твоей логике, есть. Время на матч.
|
Если используется контроль времени.
Diff : |
По ней вообще любая программа - это СРВ. Даже notepad имеет требования по производительности.
|
Только если в ТЗ (спецификации) не указаны требования, связанные со временем.
Т.е. если ты пишешь Hello World и не думаешь о том, сколько времени будет работать программа (т.е. в спецификации требований нет), то это уже не real-time.
Если же пишешь и нужно вписаться в определнные временные рамки (преждевременная оптимизация это не real-time), то это real-time. Например, если программа должна поздравить с днем варенья 1-го января, но 31-го декабря или 2-го января уже нельзя. По производительности требований нет, а система real-time.
Вот Джо говорил о том, что он сначала в лоб реализовал логику своего AI в прототипе. И как только AI стало несколько, то игра стала жутко тормозить. И вот, как только у Джо появилась мысля о том, что все таки хорошо бы вписаться для пользователя в какие-то разумные рамки с сохранением интеллекта AI, то сразу программа в этом отношении стала real-time.
Diff : |
Не время реакции, а гарантированное время реакции.
|
А мне нужно в ответ написать "не гарантированное время реакции, а гарантированный запуск заданного события с более высоким приоритетом".
Ну так, для продолжения въедливости (;
Diff : |
Но при этом QNX - ОСРВ, а линукс - нет.
|
Смотря какой линукс.. Линуксы это такие мутанты звери, что за всю ихнюю популяцию далеко не все можно категорично утверждать (;
добавлено спустя 5 минут:
Shirson : |
В каком ракурсе говорится о времени исполнения? Просто обычно это не real-time, а run-time.
|
run-time - это же то, что во время исполнения. Упала программа во время исполнения (run-time). Объект создался во время исполнения (run-time). Коннект к БД происходит на лету (во время исполнения, run-time).
В противоположность run-time можно например compile-time.
_________________ μηδείς αγεωμέτρητος εισίτω
Последний раз редактировалось: Minx (18:20 28-09-2015), всего редактировалось 9 раз(а) |
|
|
Diff
708 EGP
      Рейтинг канала: 2(11) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
Минкс, ты какую-то лютую ересь несешь. У меня даже нет сил ее разбирать по пунктам .
_________________ Конец света в конце тоннеля
Последний раз редактировалось: Diff (17:31 28-09-2015), всего редактировалось 1 раз |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Ещё одна попытка с другой стороны.
Например, на железной дороге есть микропроцессорные системы. И они много чем управляют. Посмотрим на обычную станцию. На ней туева куча объектов - десятки стрелок, светофоров, секций. .. Есть переезды, негабаритные участки, автоперегоны и т.д.
Первая особенность в том, что все это должно работать безопасно. Вторая особенность в том, что время для событий не как у тебя 125 мкс, а обычно порядка единиц секунд. Например, автопереезд на особождение дается ЕМНИП, 30 секунд. Одна стрелка может переводиться 3 секунды, а другая (магистральная) - 2 минуты.
К системе предъявляются жесткие требования real-time. Это означает, что то что прописано, должно быть кровь из носа выполнено, на уровне вероятности 0.999999.. , даже в случае отказов аппаратуры. Или чтобы был переход в безопасное состояние.
При этом real-time такой, что объектов дохрена, но все они должны работать корректно и с крайне высокой вероятностью успеха (неопасный 1 сбой например раз в 100 лет, и 1 опасный раз в 10 000 лет - года условно).
И вот, когда на ж.д. приходит кто-то с QNX, и говорит, что давайте я вам запилю ваш real-time, то его посылают накер (и такие случаи зафиксированы, в том числе провала разработки на QNX).
Такой вот real-time.
---
Теперь ещё один пример.
Клиент приходит к банкомату положить деньги на телефон. Когда система обрабатывает его запрос, то он разделен на 2 фазы. Во время первой проверяется, можно ли провести транзакцию (правильный номер телефона? есть ли деньги на карточке?). Эта фаза - real-time. Потому что нельзя человека долго держать у банкомата. Потом идет другая фаза - реальное начисление денег на счет. Так вот она не real-time. Деньги попадут через секунду или через час уже не важно, главное гарантированно снять со счета карточки N рублей (а не N/100 рублей), и зачислить на другой счет N рублей (а не N*100 рублей).
Соответственно, к первой и второй фазе разные требования. Например, на первой фазе в случае непонятной ситуации запрос можно просто отбросить. А на второй фазе банк и биллинг взяли уже на себя определенные обязательства, и отбрасывание попахивает вплоть до судебного разбирательства.
А на обоих этих фазах QNX нафиг не нужен - тут нет никаких 125 мкс.
_________________ μηδείς αγεωμέτρητος εισίτω |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Minx : |
Shirson : |
В каком ракурсе говорится о времени исполнения? Просто обычно это не real-time, а run-time.
|
run-time - это же то, что во время исполнения.
|
В таком случае высказывание
Цитата: |
Real-time - это любые требования к времени исполнения.
|
Крайне спорно.
_________________ У меня бисера не доxеpа. |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Не претендую на абсолютную точность определения.
Главное тут то, что real-time - это очень широкополосный термин и что конкретно именно имеется ввиду определяется контекстом.
_________________ μηδείς αγεωμέτρητος εισίτω |
|
|
Diff
708 EGP
      Рейтинг канала: 2(11) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
Minx : |
Ещё одна попытка с другой стороны.
Например, на железной дороге
<многабукф скиппед>
|
А какие выводы из вышеизложенного? Еще несколько постов назад ты вроде бы различал RTOS и RTC, а теперь свалил их в кучу. Зачем?
_________________ Конец света в конце тоннеля |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Diff : |
Еще несколько постов назад ты вроде бы различал RTOS и RTC, а теперь свалил их в кучу
|
[RTOS + RTC] = RT * [OS + C]
RT = куча
Хотя про RTC речи не припоминаю..
_________________ μηδείς αγεωμέτρητος εισίτω
Последний раз редактировалось: Minx (19:58 28-09-2015), всего редактировалось 1 раз |
|
|
Diff
708 EGP
      Рейтинг канала: 2(11) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
Minx : |
отя про RTC речи не припоминаю
|
Real Time Computing, http://www.elite-games.ru/conference/viewtopic.php?p=3326647#3326647
Зачем ты перемешал RTOS и прикладные задачи реального времени7
_________________ Конец света в конце тоннеля |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Речь шла об общем основании - real-time.
_________________ μηδείς αγεωμέτρητος εισίτω |
|
|
Diff
708 EGP
      Рейтинг канала: 2(11) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
А к чему был пост о ненужности QNX при управлении железнодорожной стрелкой?
_________________ Конец света в конце тоннеля |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Кто тому, что real-time это не обязательно 125 мкс.
_________________ μηδείς αγεωμέτρητος εισίτω |
|
|
Diff
708 EGP
      Рейтинг канала: 2(11) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
Да, не обязательно. Для 125 мкс, кстати, QNX тоже оказался не нужен. На линуксе оно работало лучше.
_________________ Конец света в конце тоннеля |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Minx : |
Чего гадать-то.. в той же книжке расписаны порядки:
• Registers & CPU cache: 1 nanosecond
• RAM: 10^2 nanoseconds
• Local drives: 10^5 to 10^7 nanoseconds
• Network: 10^6 to 10^9 nanoseconds
|
Ещё один пример порядков да и вообще:
Цитата: |
• At physical level, all the work with memory is usually made via so-called “cache lines”. On x86/x64, cache line is 64 bytes for many years now
•• It means that as soon as you’ve accessed any single byte in a cache line, all the other 63 bytes are already in L1 cache
•• In addition, if your program exhibits a pattern of sequential reading, CPU usually does so-called “prefetch”, getting you the next-in-pattern cache line just in case you MIGHT need it.
• Register-register operation is around 1 CPU clock
• L1 read is like 4 CPU clocks these days (typical L1 cache data size is around 32K). Usually L1 is per-core
• L2 read is around 10-12 clocks (typical L2 cache size is around 256K). L2 is usually per-core these days
• L3 read is 30-50 clocks (typical L3 cache size is around 4-12M). Unlike L1-L2, L3 is usually shared between cores and is per-socket(!)
• Main RAM access is around 100-150 CPU clocks
• NUMA accesses. NUMA applies only to multi-socket configurations, i.e. to servers and (almost-)only to servers:
•• With NUMA, each CPU has its own RAM connected to it (and only to it); there is no more SMP/FSB-style “RAM directly connected to all the CPUs”
••• Whenever CPU A needs to access RAM connected to CPU B, CPU A issues a request to CPU B which goes over ultra-fast CPU-to-CPU connection (for example, Hypertransport for AMD, or Quick Path Interconnect a.k.a. QPI for Intel)
•• NUMA access to another socket, with data happening to be in other-socket L3, costs 100-200 CPU clocks
•• NUMA access to another socket, with data happening to be in RAM, costs 200-300 CPU clocks
http://ithare.com/c-for-games-performance-allocations-and-data-locality/
|
_________________ μηδείς αγεωμέτρητος εισίτω |
|
|
|
|
|
Канал Игры Мечты: «Что такое real-time» |
|