nixp.ru v3.0

23 октября 2017,
понедельник,
01:55:36 MSK

DevOps с компанией «Флант»
sml написал 17 февраля 2005 года в 13:57 (320 просмотров) Ведет себя неопределенно; открыл 1 тему в форуме, оставил 2 комментария на сайте.

Здравствуйте.

При ознакомлении с линуксом возникли вопросы…

Существует ли для линукса книжка типа «Performance tuning guide» ? В каком угодно виде. В инете я что-то не могу найти ничего подобного. Например, в SCO OpenServer, на котором мы давно и успешно работаем, такая книжка есть. И очень хорошая. В ней подробно написано, как система внутри работает с процессами, памятью, вводом/выводом, как ее мониторить и как всем этим управлять.

В линуксе, на первый взгляд, все немного по-другому.

Например, с памятью.

Что такое page cache ? Где описан этот механизм ?

Интересует описание не на уровне внутренних struct’ов ядра, а на уровне администратора системы.

Поясню, о чем я.

В ответ на cat /proc/meminfo мне показывают, сколько памяти занято, сколько свободно, сколько «buffered» и сколько «cached». Здесь мне все знакомо, кроме этого «cached».

Genie

по оптимизайии файловой системы было что-то на opennet.ru

некоторые момент разбиения диска, расположения разделов и пр. точно уже не помню :)

ну, раз у тебя есть книжка, в которой довольно толково объяснено, что и как делать в sco, то, может быть, особенно ценные моменты настроек тут привести? и уже понемногу найти ответы, на то, как это сделать в Linux?

и будет довольно неплохое пособие уже по оптимизации уже для Linux.

вполне вероятно, что это уже где-то что-то есть, но без понимания конкретного направления поиска делать что-то, искать — не хочется.

smlhome

«Привести особо ценные моменты настроек» — это смысла не имеет.

Да и нет там такого. Вот, мол, измените такую-то переменную на такое-то значение и будет все окей. В книге этой излагаются МЕТОДИКИ. Как и что мониторить, как на основании полученных наблюдений делать правильные выводы, и что где нужно менять в зависимости от того, какая сделаны выводы на предыдущих шагах.

Суть моей проблемы в том, что для всякой коммерческой операционной системы такая книга есть, а для линукса ее нет. По крайней мере, пока я найти ничего не могу.

И это для меня странно. Странно потому, что линукс сегодня позиционируется как база для построения систем масштаба предприятия. А как строить серьезную систему без такой документации — пока непонятно. Под серьезной системой я понимаю нечто большее, чем маршрутизатор + почтовый сервер + файл-сервер. Речь идет о системе бронирования авиакомпании.

Ну да ладно. Это все лирика.

Более конкретный насущный вопрос вот в чем: в каком документе подробно описано то, что выдается в /proc/meminfo ? Где описан линуксовый механизм page cache ?

Если еще более упростить, то можно задать и такой вопрос: как определить, сколько в данный момент свободно физической оперативной памяти ?

Да, я уже догадываюсь, что в линуксе этот вопрос не совсем корректен и разумного ответа быть не может. Но где все это описано ?!

Genie
как определить, сколько в данный момент свободно физической оперативной памяти ?



$ man free
...
$ free


Более конкретный насущный вопрос вот в чем: в каком документе подробно описано то, что выдается в /proc/meminfo ?

см.:

/usr/src/linux/fs/proc/proc_misc.c

/usr/src/linux/Documentation/filesystems/proc.txt

(можно было и собственноручно запустить grep -r MemTotal /usr/src/linux/ и найти файлы, указанные чуть выше)

metal

Google все расскажет:

http://www.google.ru/search?hl=ru&q=%2Fproc%2Fmeminfo&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=

smlhome
Genie

$ man free
...
$ free

см.:

/usr/src/linux/fs/proc/proc_misc.c

/usr/src/linux/Documentation/filesystems/proc.txt

(можно было и собственноручно запустить grep -r MemTotal /usr/src/linux/ и найти файлы, указанные чуть выше)

Да, все это я уже видел.

Однако ответа на мой вопрос там нет.

(Может плохо смотрю или у меня файлы не те?)

man free не разъясняет смысла тех чисел, которые она показывает.

Мне же там непонятно число «cached». Пожалуйста, если Вам не трудно, не могли бы Вы разъяснить мне, что это такое.

А в /usr/src/linux/Documentation/filesystems/proc.txt по этой теме написано так:

meminfo Memory info

Всё. Точка.

Я бы даже переформулировал свою проблему по-другому.

Есть сервер, на нем запущен линукс и больше пока ничего.

Мне на этом сервере нужно запустить SQL-сервер и Application-сервер. Сколько нужно памяти для Application-сервера — я знаю. Допустим, этот объем равен 200Мб. Все остальное нужно отдать под кэш SQL-сервера. Т.е. из всей имеющейся свободной оперативной памяти я хочу вычесть 200Мб и то, что останется, отдать SQL-серверу. Ну, там, за вычетом еще какой-нибудь мелочи на накладные расходы.

При этом важно, чтобы все это помещалось именно в физической оперативной памяти и не попадало в своп. Это непременное условие.

У меня, к примеру, free показывает такое:

total used free shared buffers cached

Mem: 479652 442100 37552 0 10036 349908

-/+ buffers/cache: 82156 397496

Swap: 522040 102280 419760

Для данного конкретного примера мой вопрос звучит так: как правильно вычислить размер кэша SQL-сервера ? Я знаю число 200Мб, но не знаю, из какого числа его нужно вычитать…

Кто-нибудь это знает ?

Число free (37552) в этом примере выглядит неразумным. Практические эксперименты позволяют сделать вывод о том, что я реально могу расчитывать и на то, что отнесено к «cached»…. Но это эксперименты, результаты которых тоже можно интерпретировать по-разному.

Хотелось бы ознакомиться с теорией.

Да, надо заметить, что картинка free снята не на пустой системе, как я написал в условии задачи. Прошу к этому не придираться. От конкретных чисел ведь ничего не зависит, важен принцип.

Еще, кстати, не очень понятна политика свопа в линуксе.

В sco все гораздо проще — система старая и понятная. Пока физическая память занята не до конца она вообще в своп не лезет. В линуксе, похоже, по-другому…. А где же описание этого всего ?

smlhome
metal
Google все расскажет:

http://www.google.ru/search?hl=ru&q=%2Fproc%2Fmeminfo&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=

О! а за это спасибо.

Мои поиски почему-то таких результатов не давали… ;)

Genie
Мои поиски почему-то таких результатов не давали… ;)

угу.. быстрый поиск инфы в гугле — это уже искусство… ;))

Да, все это я уже видел.

Однако ответа на мой вопрос там нет.

насколько я вообще понимаю, это лишь отправная точка для поисков.

У меня, к примеру, free показывает такое:

total used free shared buffers cached

Mem: 479652 442100 37552 0 10036 349908

512Мб всего, 32Мб — на встроенное видео, действительно свободной (точнее нераспределённой) — 37552, буферов файловой системы на 10036, файловый cache — на 349908, распделённой памяти в сумме — на 442100.

нормально, в общем-то.

-/+ buffers/cache: 82156 397496

Swap: 522040 102280 419760

распределённой памяти (без буферов и кеша) — 82156, свободной для распределения (для выделения программам) — 397496.

в свап выгружено 102280.

Для данного конкретного примера мой вопрос звучит так: как правильно вычислить размер кэша SQL-сервера ? Я знаю число 200Мб, но не знаю, из какого числа его нужно вычитать…

Кто-нибудь это знает ?

временами возникает ощущение, что, к примеру, код программы, долго ничего не делавшей (к примеру, забытая на пару часов играния в ку3 Mozilla), вообще выкидывается из памяти (даже не в свап), а данные — в свап.

поэтому сказать что-то о данных — сложно.

текущее состояние, как оно работает — это RTFS.