История изменений
Исправление alysnix, (текущая версия) :
Задача - добиться устойчивого времени реакции на сообщение порядка 10 микро секунд. Ваше решение? Студия ждёт.
это вопрос ни о чем. не указаны ни железо, ни ос, ни характер «сообщения», ни характер «реакции», ни средняя загрузка системы. и все эти факторы влияют на ответ.
для каких-то случаев и ситуаций… время реакции будет вообще наносекунды, для других - куда дольше.
хотите хардкорного жесткого рилтайма - ставьте плис. короче сначала почитайте про low latency системы или архитектуры, как железа так и по, а потом вопрос задавайте.это обширная тема, и так просто, ее касаясь, вопрос ставить нельзя.
но сразу скажу - это не имеет к поллингу ни малейшего отношения, если вы пытаетесь его как-то оправдать для применения.
по простой причине. если N процессов, ну или тредов, находятся в полинге, ядер меньше чем N, то все равно треды будут вытесняться, и какое-от время в полллинге не быть. и если в это время придет событие которое они типа поллят, то среагирует такой тред на событие только когда ему дадут ядро. и это время будет определяться частотой переключения тредов и их и числом.
допустим тредов 10, и все в полинге - а ядро одно. тогда скорость реакции в среднем - квант времени работы треда * N/2.
вот если ядро одно, квант времени 1 мс, тредов 10(НА ВСЮ ЖЕЛЕЗО!!!), то если они даже сидят в поллинге, то время среднее время реакции будет 5 мс. и загрузка проца 100 проц.
а на правильной системе время реакции будет определяться временем переключения тредов(это вопросы к реализации планировщика) и менеджментом приоритетов тредов. и будет куда меньше, чем даже если вы будете поллить. и загрузка проца - ноль! от есть правильное решение бьет ваши «взрослодядечковые» методологии, по всем направлениям.
ваши задачки - куча ядер и мало тредов - нереальны. в реальности тредов куда больше чем ядер, и даже если они не спят, они ядра не занимают монопольно.
Исходная версия alysnix, :
Задача - добиться устойчивого времени реакции на сообщение порядка 10 микро секунд. Ваше решение? Студия ждёт.
это вопрос ни о чем. не указаны ни железо, ни ос, ни характер «сообщения», ни характер «реакции», ни средняя загрузка системы. и все эти факторы влияют на ответ.
для каких-то случаев и ситуаций… время реакции будет вообще наносекунды, для других - куда дольше.
хотите хардкорного жесткого рилтайма - ставьте плис. короче сначала почитайте про low latency системы или архитектуры, как железа так и по, а потом вопрос задавайте.это обширная тема, и так просто, ее касаясь, вопрос ставить нельзя.
но сразу скажу - это не имеет к поллингу ни малейшего отношения, если вы пытаетесь его как-то оправдать для применения.
по простой причине. если N процессов, ну или тредов, находятся в полинге, ядер меньше чем N, то все равно треды будут вытесняться, и какое-от время в полллинге не быть. и если в это время придет событие которое они типа поллят, то среагирует такой тред на событие только когда ему дадут ядро. и это время будет определяться частотой переключения тредов и их и числом.
допустим тредов 10, и все в полинге - а ядро одно. тогда скорость реакции в среднем - квант времени работы треда * N/2.
вот если ядро одно, квант времени 1 мс, тредов 10(НА ВСЮ ЖЕЛЕЗО!!!), то если они даже сидят в поллинге, то время среднее время реакции будет 5 мс. и загрузка проца 100 проц.
а на правильной системе время реакции будет определяться временем переключения тредов(это вопросы к реализации планировщика) и менеджментом приоритетов тредов. и будет куда меньше, чем даже если вы будете поллить.
ваши задачки - куча ядер и мало тредов - нереальны. в реальности тредов куда больше чем ядер, и даже если они не спят, они ядра не занимают монопольно.