Docker Container убит во время испытаний производительности

Ядро знает, какие страницы изменяются, так же, как и любые другие страницы: когда они записываются, в таблицах страниц устанавливается флаг, помечающий их как «грязные». Это делается либо ЦП, либо MMU, либо с их помощью (например, они могут установить бит напрямую или вызвать прерывание, чтобы программное обеспечение сделало это).

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

Я не уверен, сколько других способов изменить файл, но их как минимум несколько:

  1. truncate / ftruncate
  2. writev , pwritev , aio_write (варианты write )
  3. Используйте его как файл подкачки, резервное устройство для устройства обратной связи (например, / dev / loop0) и т. д.
  4. Могут быть вызовы ioctl , которые изменяют содержимое файла. Хуже того, они могут зависеть от файловой системы.
0
12.11.2018, 14:31
1 ответ

Память

Узнайте о рисках нехватки памяти

Важно не допускать, чтобы работающий контейнер потреблял слишком много памяти хост-компьютера. На хостах Linux, если ядро ​​​​обнаруживает, что памяти недостаточно для выполнения важных системных функций, оно генерирует исключение OOME или исключение нехватки памяти и начинает убивать процессы, чтобы освободить память. Уничтожению подлежит любой процесс, в том числе Docker и другие важные приложения. Это может эффективно вывести из строя всю систему, если будет убит неправильный процесс.

(...)

Ограничить доступ контейнера к памяти

-m or --memory= The maximum amount of memory the container can use. If you set this option, the minimum allowed value is 4m (4 megabyte).

Источники:

https://docs.docker.com/config/containers/resource_constraints/#memory

0
28.01.2020, 04:09

Теги

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