Ограничить использование ресурсов вызовов JNA без изменения DLL

1

Как вы можете запретить метод-вызов JNA превышать пороговые значения для использования ЦП, количества потоков и ограничений памяти?

Задний план:

Я работаю над критическим для безопасности приложением, и одна из важнейших функций, не относящихся к безопасности, требует использования библиотеки, написанной на C. Библиотеки DLL были предоставлены мне как черный ящик, и нет никаких шансов, что я получу доступ к исходному коду за файлами интерфейса java. Есть ли способ ограничить использование ЦП, количество потоков и память, используемую кодом JNA?

Теги:
dll
resources
jna
safety-critical

2 ответа

0

Для большинства операционных систем вы должны либо вызывать свой код C из нового потока, либо нового процесса. Я бы порекомендовал называть его новым процессом, так как тогда вы можете использовать его в виде песочницы проще и глубже. Как правило, в подобной системе Unix вы переключитесь на нового пользователя, зарезервированного для этой службы, и на котором установлены ограничения на пользовательские ресурсы. Однако в Linux можно использовать пространства имен пользователей и группы для более динамичной и гибкой песочницы. В Microsoft Windows обычно используются объекты Job для песочницы ресурсов, но изолированная песочница на основе разрешений сложнее (многие из Windows легко изолируются с помощью элементов управления доступом, но части сообщений графического интерфейса и окна делают вещи сложными и раздражающими).

0

См. ulimit и sysctl, которые применимы к вашему общему процессу JVM (или любому другому процессу, если на то пошло).

Нелегко сегментировать части вашего JVM, которые делают собственные обращения через JNA от тех, которые не являются.

Вы должны запустить некоторое профилирование, пока вы используете свою общую библиотеку, чтобы выяснить, какие ресурсы она использует, поэтому вы можете сосредоточиться на настройке ограничений вокруг них ( lsof или strace будет использоваться в Linux, я не уверен в эквиваленте в окнах),

Ещё вопросы

Сообщество Overcoder
Наверх
Меню