LINUX.ORG.RU

История изменений

Исправление hakavlad, (текущая версия) :

Скорость чтения. Она зависит от степени кэширования файла. Кэшированный файл читается со скоростью гигабайты в секунду, некэшированный - мегабайты или десятки мегабайт в секунду в зависимости от размера чанка и скорости диска.

На кэширование (особенно при нехватке памяти) влияют различные факторы: vm.swappiness, vm.watermark_scale_factor etc. например, при нехватке памяти при низком swappiness кэш будет легко удаляться из памяти для предотвращения своппинга, вследствие чего производительность чтения резко падает. Например, начало нехватки памяти и начало своппинга при swappiness=100:

$ cache-bench -r 15000 -i 4 -b 1 -p 1
starting cache-bench
  file: testfile.bench
  file size: 300.0 MiB
  log file is not set
  output interval: 4.0s
  mmap: 0, preread: 1, bloat: 1, chunk: 64 KiB
prereading (caching) the file...
  preread 300.0 MiB (100.0%) in 2.6s
reading 15000.0 MiB from the file...
  read 7042.6M in 4.0s (1760.7M/s); total 7042.6M in 4.0s, avg 1760.7M/s
  read 3541.1M in 4.0s (884.7M/s); total 10583.7M in 8.0s, avg 1322.5M/s
  read 68.6M in 4.0s (17.1M/s); total 10652.4M in 12.0s, avg 886.8M/s
  read 46.1M in 4.0s (11.5M/s); total 10698.4M in 16.0s, avg 667.8M/s
  read 51.3M in 4.0s (12.8M/s); total 10749.7M in 20.0s, avg 536.7M/s
  read 55.8M in 4.0s (13.9M/s); total 10805.5M in 24.0s, avg 449.6M/s

– сначала чтение из кэша идет быстро, потом резко замедляется. Такого замедления можно избежать при swappiness=200.

Конечно, можно и скорость чтения с устройства измерять, наблюдая влияние размера чанка на скорость чтения, когда файл еще не попал в кэш.

С другой строны, можно наблюдать влияние продолжительного чтения из большого файла на начало своппинга. При интенсивном чтении своппинг заметен даже при небольших значениях swappiness.

Также --mmap опция особенно полезна при изучении эффектов Multigenerational LRU Framework: с ним кэш mmapped файлов получает усиленную защиту и с трудом вытесняется при нехватке памяти.

Исходная версия hakavlad, :

Скорость чтения. Она зависит от степени кэширования файла. Кэшированный файл читается со скоростью гигабайты в секунду, некэшированный - мегабайты или десятки мегабайт в секунду в зависимости от размера чанка и скорости диска.

На кэширование (особенно при нехватке памяти) влияют различные факторы: vm.swappiness, vm.watermark_scale_factor etc. например, при нехватке памяти при низком swappiness кэш будет легко удаляться из памяти для предотвращения своппинга, вследствие чего производительность чтения резко падает. Например, начало нехватки памяти и начало своппинга при swappiness=100:

$ cache-bench -r 15000 -i 4 -b 1 -p 1
starting cache-bench
  file: testfile.bench
  file size: 300.0 MiB
  log file is not set
  output interval: 4.0s
  mmap: 0, preread: 1, bloat: 1, chunk: 64 KiB
prereading (caching) the file...
  preread 300.0 MiB (100.0%) in 2.6s
reading 15000.0 MiB from the file...
  read 7042.6M in 4.0s (1760.7M/s); total 7042.6M in 4.0s, avg 1760.7M/s
  read 3541.1M in 4.0s (884.7M/s); total 10583.7M in 8.0s, avg 1322.5M/s
  read 68.6M in 4.0s (17.1M/s); total 10652.4M in 12.0s, avg 886.8M/s
  read 46.1M in 4.0s (11.5M/s); total 10698.4M in 16.0s, avg 667.8M/s
  read 51.3M in 4.0s (12.8M/s); total 10749.7M in 20.0s, avg 536.7M/s
  read 55.8M in 4.0s (13.9M/s); total 10805.5M in 24.0s, avg 449.6M/s

– сначала чтение из кэша идет быстро, потом резко замедляется. Такого замедления можно избежать при swappiness=200.

Конечно, можно и скорость чтения с устройства измерять, наблюдая влияние размера чанка на скорость чтения, когда файл еще не попал в кэш.

С другой строны, можно наблюдать влияние продолжительного чтения из большого файла на начало своппинга. При интенсивном чтении своппинг заметен даже при небольших значениях swappiness.

Также --mmap опция особенно полезна при изучении эффектов Multigenerational LRU Framework: с ним кэш mmapped файлов получает усиленную защиту и с трудом вытесняется при нехватке памяти.