Есть ли способ предсказать или подсчитать количество неисправностей страницы?

grep использует строку "$NAME.${var}\$" в качестве регулярного выражения. Предположительно, до вашей проблемной строки кода переменным оболочки name и var были присвоены значения, так что оболочка интерпретирует значения вашего скрипта для $NAME и ${var}. Поскольку конечное "$" регулярного выражения экранируется обратным слешем, оболочка, интерпретирующая ваш сценарий, не пытается интерполировать значение переменной оболочки. "$" передается в grep как часть регулярного выражения. И действительно, "$" имеет особое значение для grep в контексте регулярного выражения. "$" означает "конец строки" для grep. Ничто, кроме семантики того, для чего вы grep, не требует конечного "$".

0
01.12.2018, 16:32
2 ответа

Вы определенно можете создать журнал всех ошибок страниц, но вы не сможете надежно их предсказать. Просто отключите виртуальную память и убедитесь, что ваше программное обеспечение помещается в ОЗУ, а еще лучше в L2. Может Зрам поможет. Также установите значение nice и используйте ОС реального времени, если хотите лучших результатов.

0
28.01.2020, 04:07

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

Самый простой способ сделать это в POSIX-совместимых и POSIX-подобных -системах — вызвать функцию mlockall()из libc при запуске с установленными флагами MCL_CURRENTи MCL_FUTURE. Это делает три вещи:

  1. Это предотвращает выгрузку любой памяти, отображаемой процессом, когда-либо (ну, по крайней мере, до тех пор, пока вы не вызоветеmunlockall()).
  2. Принудительно приводит к сбою всех отображаемых в настоящее время страниц. Вместе с первым пунктом это означает, что отсутствие доступа к отображенным областям памяти приведет к ошибке страницы.
  3. Принудительно выдает ошибку во всех вновь сопоставленных страницах, когда они сопоставляются. Это означает, что любые вызовы, выделяющие память, вызовут точно такое количество отказов страниц, которое требуется для помещения содержимого этой области памяти в память, а последующий доступ после завершения выделения не вызовет никаких отказов страниц.

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

0
28.01.2020, 04:07

Теги

Похожие вопросы