Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Вводная: Имеем железо с 4 Гб памяти, ОС - Debian Linux 3.0, ядро 2.4.31, на нем установлен IDS 7.31UC8. Пользователей к IDS подключается много, нагрузка довольно большая, иногда - критичная по части дискового чтения (не будем тыкать пальцами в программеров с их неоптимизированными запросами :) ). В данный момент имеем следующие параметры конфигурации, связанные с использованием Информиксом ОЗУ: Код: plaintext 1. 2. 3. 4. 5. 6. в ядре увеличено на основании рекомендаций Installation Notes SHMMAX 0xE0000000 (т.е. 3,5 Гб. - с лихвой) Всего используется памяти Информиксом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Т.е. из 4Гб. ОЗУ в системе еще остается "неоприходованными" порядка 2 Гб. с хвостиком, которые, естественно, хотелось бы отдать Информиксу в распоряжение... Теория гласит, что память Информиксом расходуется на 3 "порции": Resident portion Virtual portion Message portion Нас интересуют как наиболее "памятеемкие" - первые две. Вижу по тому же "onstat -g seg", что в процессе эксплуатации Информикс дополнительных сегментов себе не берет, поэтому увеличивать исходный размер "Virtual portion" с помощью параметра SHMVIRTSIZE как бы и смысла нет - все равно достаточно уже. Т.е. остается отдать ОЗУ Информиксу под BUFFERS, которые находятся в Resident portion. Опять же в документации видим, что параметр BUFFERS может принимать значения (для Linux 32) от 100 до 1,843,200 (т.е. увеличивать еще есть куда). А также рекомендуется выставлять его в пределах 20-25 % от объема системного ОЗУ - сейчас как раз и имеем 20%: 400000 * 2Кб = 800Мб. Но я задался целью отдать еще немного памяти Информиксу под буфера как бы то ни было, и никаких гвоздей! :) Вот в этом месте и начинаются проблемы. Собсно процесс: 1) прямое увеличение BUFFERS 500000 приводит к тому, что Информикс просто отказывается стартовать с ругательствами в логе: Код: plaintext 1. 2. 3. Расследование содержимого исходников ядра показало, что MAXMEM определяется как-то хитро (с использованием переполнения long int, как мне подсказали матерые товарищи) и равняется и так 3,8Гб, поэтому беспокоиться нет причин (?) ЗЫ. Кстати, прямое увеличение параметра SHMVIRTSIZE на треть (ради эксперимента) тоже приводит к нежеланию Информикса стартовать при вышеуказанных значениях остальных параметров. 2) после прочтения вот этого документа http://]www-1.ibm.com/support/docview.wss?uid=swg21215798# (похожая проблема) ради эксперимента удалось поднять SHMVIRTSIZE почти до 2 Гб. путем снижения параметра SHMBASE 0xB000000L. Другими словами - Информиксу удалось отдать суммарно порядка 2,8Гб ОЗУ. Правда, в логе при старте появляется ругательство вида (Информикс все равно стартует успешно, да и функционирует вроде тоже): Код: plaintext 1. 2. 3. 4. 5. 6. А что же BUFFERS - спросите вы? Хм, с SHMBASE 0xB000000L стартует при 500000 !!! но, увы, сразу же облом: при попытке выполнить команды onstat или onmode: Код: plaintext 1. 2. Т.е. вышеописанное шаманство на необходимое увеличение BUFFERS все равно положительно не подействовало... :( 3) гугление и поиск на сайте IBM не дали подсказки к решению. .... Чтобы не увеличивать и так получившийся огромным пост (пардон), скажу, что методом разнообразных махинаций с переменными LOCKS, SHMBASE, SHMVIRTSIZE, RESIDENT, SHMTOTAL добиться желаемого результата мне так и не удалось. ВОПРОС: это вообще кому-то удавалось (имею ввиду ЗНАЧИТЕЛЬНОЕ увеличение BUFFERS по сравнению с "рабочими" 400 000) ? (или может даже в FAQ уже прописали, но я был невнимателен?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 20:40 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
http://www.webservertalk.com/message1193171.html - описывает, что у вас происходит. А что делать - читать machine notes . http://publib.boulder.ibm.com/epubs/html/25123410.html У вас, как я понимаю, не UC8 (нет такой буквы !) а UD8. Для линукса LOCATION OF SHARED MEMORY: ========================= 0x10000000L Т.е. SHMBASE надо выставить в 0x10000000L В таком вот аксепте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 21:09 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Да, все бы так вопросы задавали. Все рассказано, показано, исследовано и уже "в самом вопросе есть половина ответа" :) Если подвести итог, то, как здесь уже не раз, кажется, отмечали, на 32-х разрядных платформах не удается заюзать Инофрмиксом более 2.7 Гб. Т.е. это почти максимум из возможных 4Гб, из которых 1Гб будет отдан ядру ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 22:20 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
IMHO: В средней системе увеличение буфера с 1Г до 2Г, даст прирост производительности 1%. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 08:50 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
to svat2 Посмотри вот это Максимальный размер памяти для версий UC (32bit) как то у меня была похожая проблема - но в той конфигурации активно использовался виртуальный сегмент разделяемой памяти, поэтому проблема решалась именно для него. Впрочем для этой задачи никакой разницы для ОС относительно того что лежит в сегменте нету, так что можете попробовать решить ее для резидентного сегмента. Только имейте ввиду что кроме буферов в резидентном сегменте еще много чего лежит, так что дополнительные структуры тоже надо учитывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 09:17 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
svat2 Код: plaintext 1. 2. Т.е. вышеописанное шаманство на необходимое увеличение BUFFERS все равно положительно не подействовало... :( Когдато давно я пробовал разбираться с подобным вопросом. Положительного Результата тоже не получил, по причине недостатка времени. В методику исследования хотел бы добавить изучение карты распределения памяти процесса, которая в linux находится в /proc/${pid}/maps. Посмотрите может поможет. Во всяком случае это даст вам возможность максимально точно определить значение SHMBASE, которое уже может быть непереносимо между разными версиями. Для успешного запуска onstat ontape и прочих необходимо смотреть их карты адресов. Возможна ситуация когда по адресу пересекающемуся с новым SHMBASE к моменту подключения разделяемой памяти onstat уже использует как кучу. з.ы. Хлопотное это дело однако. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 11:42 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Да кстате на какомто оракловом сайте была методика которя давала возможность играться с адресами загрузки разделяемых библиотек. К сожалению ссылка потеряна, адреса загрузки библиотек изменять получилось только для oninit, прочие утилиты были неработоспособны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 11:59 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
onstat-Да кстате на какомто оракловом сайте была методика которя давала возможность играться с адресами загрузки разделяемых библиотек Machine notes, цитата: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Разумеется, вместо su root и пр. надо, по идее, использовать sudo и сразу пихать в стартаповый скрипт, а то при рестарте сервера вспоминать где лежит нужная бумажка -- я бы не взялся. У меня сервер чаще раза в год не рестартует... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 13:08 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Выбегалло http://www.webservertalk.com/message1193171.html - описывает, что у вас происходит. А что делать - читать machine notes . http://publib.boulder.ibm.com/epubs/html/25123410.html У вас, как я понимаю, не UC8 (нет такой буквы !) а UD8. Для линукса LOCATION OF SHARED MEMORY: ========================= 0x10000000L Т.е. SHMBASE надо выставить в 0x10000000L В таком вот аксепте Благодарю за ответ, почитал ссылки, первая - полезная, в принципе поясняет то, что происходит, да. А вот насчет " SHMBASE 0x10000000L " имею что сказать. 1) Ранее, когда настраивался этот сервер другим админом (я в те времена вообще смотрел на Информикс, как на черный ящик) именно так и было выставлено. Мне тоже так объяснялось - мол, смотри в этот файлик и по нему делай все. НО. При попытке увеличивать параметры LOCKS, BUFFERS, SHMVIRTSIZE уже на значениях, которые значительно меньше описанных мною сервер не желал стартовать, а если и работал, то глючила (не выполнялась) команда oncheck. ТОлько что проверил - действительно, если ставлю SHMBASE 0x10000000L - не стартует. (при LOCKS 10000 BUFFERS 400000 SHMBASE 0x10000000L SHMVIRTSIZE 786432 ) 2) К числу 0x50000000L пришли эмпирически - тот админ составил скрипт, который в цикле перебирал с неким шагом значения BUFFERS, SHMVIRTSIZE, SHMBASE. И пытался запускать IDS и проверять корректность работы утилиты oncheck. Среди успешных результатов был выбран самый "максимально-оптимальный" по кол-ву занимаемой буфферами памяти. Он пришелся на SHMBASE 0x50000000L и с тех пор не менялся. ЗЫ. ну вот теперь я "дорос" до уровня некого понимания что к чему и решил самолично еще поискать какой-нибудь другой способ решения проблемы. А вдрух? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 20:36 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Ilya Kulagin Код: plaintext 1. 2. 3. Увы, Debian 3.0 к их числу не принадлежит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 20:45 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисIMHO: В средней системе увеличение буфера с 1Г до 2Г, даст прирост производительности 1%. Код: plaintext 1. :) может быть и так происходит в некоторых случаях, но вот документ на сайте IBM говорит следующее (цитирую): BUFFERS ... the number of buffers that the database server requires depends on the applications. For example, if the database server accesses 15 percent of the application data 90 percent of the time, you need to allocate enough buffers to hold that 15 percent . Increasing the number of buffers can improve system performance. не правда ли - тяжело не согласиться? На каком проценте "application data" у меня проходит черта "90% of the time" (разумеется, надо было бы дважды окавычить, т.к. цифры +/- лапоть на север, сдается мне) - я не знаю как определить. Следовательно, узнать, умещаются ли эти "15%" в мои 800Мб буферов, - тоже неизвестно... Поэтому мне показалось более простым выходом просто увеличить BUFFERS и посмотреть - насколько это улучшит ситуацию с cache hits. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 21:00 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисIMHO: В средней системе увеличение буфера с 1Г до 2Г, даст прирост производительности 1%. Люди, зачем вам это? Серебряная пуля зарыта в другом месте. В догонку: Представим ситуацию, что есть BUFFERS 800Mb и 2 неоптимизированных запроса, каждый из которых вызывает seqscan по 800Мб данных. И эти данные не пересекаются между ними. В результате, при многократном поочередном выполнении запросов у нас IDS будет загружать с диска в буффера то одну 800Мб-айтную порцию данных (для запроса 1), то другую (для запроса 2). И, как я понимаю (может ошибаюсь - поправьте), cache hit будет практически нулевой. А вот если бы у сервера был в таком случае BUFFERS 1600Mb (умещающий ВСЕ данные обоих запросов), то cache hit по идее резко бы прыгнул почти до максимального. ИМХО, при реальном объеме данных в БД порядка 50 Гб. и несколькх таблицах по 2Гб и более - ситуация вполне вероятная... ЗЫ. это я оправдываю поиски пули в этом месте :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 21:12 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
... и последнее, удивленно-риторическое: Если известно, что на 32-битной платформе даже теоретически IDS не может взять под свои нужды суммарно более 2,75Гб, то какой смысл в описании параметра BUFFERS: range of values For 32-bit platform on UNIX: with page size equal to 2048 bytes: 100 through 1,843,200 buffers т.е. зачем делать верхний предел параметра 3.6 Гб, если его все равно ни при каких раскладах достичь не удастся?!! ЗЫ. в суд на них подать что ли... за введение в заблуждение с корыстной целью? Одно слово - мошенничество! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 21:25 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
svat2 ТОлько что проверил - действительно, если ставлю SHMBASE 0x10000000L - не стартует. Ошибку в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 06:36 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
svat2может быть и так происходит в некоторых случаях, но вот документ на сайте IBM говорит следующее (цитирую): Если посмотреть на вывод onstat -p станет понятно на каком участке кривой вы находитесь, даже станет понятно можно ли уменьшить буфер. Понятно что % попадания можно искусственно накрутить к 100%, но в любом случае это дает некоторую оценку, и если он 99.96%, то пыжится уже нет смысла скажем в 80% случаев, т.е. как когда-то советовали в ucdi стоит выдернуть память, продать и купить пива -- пользы больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 08:38 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
svat2Следовательно, узнать, умещаются ли эти "15%" в мои 800Мб буферов, - тоже неизвестно... Поэтому мне показалось более простым выходом просто увеличить BUFFERS и посмотреть - насколько это улучшит ситуацию с cache hits.я знаю способ проще - уменьшить BUFFERS и посмотреть, насколько это ухудшит ситуацию с cache hits у вас сейчас сколько процентов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 10:59 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Выбегалло svat2 ТОлько что проверил - действительно, если ставлю SHMBASE 0x10000000L - не стартует. Ошибку в студию. Только что перепроверил. Сначала нормальный старт (пардон, что тестовый сервер щас в Recovery только, но эффекта это не меняет) с параметрами: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Результат: # onstat - Код: plaintext 1. Теперь меняю только параметр Код: plaintext Перезапускаю (oninit -rv), результат: на экране Код: plaintext 1. 2. Код: plaintext 1. 2. пытаюсь остановить IDS: Код: plaintext 1. 2. 3. проверяю, выгрузились ли процессы: Код: plaintext 1. Увы, попытка безуспешна, прибиваю насильно: Код: plaintext 1. Опускаю значение BUFFERS до 300000 и последовательно с некоторым шагом подымаю в поисках верхнего предела. Получается, что при значении SHMBASE 0x10000000L максимально возможное "рабочее" значение BUFFERS ~346000. При 347000 уже получаем вышеописанную ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 15:03 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис svat2может быть и так происходит в некоторых случаях, но вот документ на сайте IBM говорит следующее (цитирую): Если посмотреть на вывод onstat -p станет понятно на каком участке кривой вы находитесь, даже станет понятно можно ли уменьшить буфер. (skipped) У меня еженощно эта информация регистрируется и потом обнуляются счетчики, поэтому могу продемонстрировать эти значения к примеру за последние 4 дня: 3.12.2006 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 4.12.2006 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 5.12.2006 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 6.12.2006 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 15:13 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
svat26.12.2006 Код: plaintext 1. 2. svat2 Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 15:28 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис svat26.12.2006 Код: plaintext 1. 2. Можно - да некак, вот в чем беда! :) Почему и дискуссию тут развел... Журавлев Денис svat2 Код: plaintext 1. А где можно поподробнее прочесть о методике определения, "куды смотреть"? ЗЫ. сейчас TBLSTATS = 0 (для повышения производительности), придется включать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 16:22 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
svat2 Выбегалло svat2 ТОлько что проверил - действительно, если ставлю SHMBASE 0x10000000L - не стартует. Ошибку в студию. Опускаю значение BUFFERS до 300000 и последовательно с некоторым шагом подымаю в поисках верхнего предела. Получается, что при значении SHMBASE 0x10000000L максимально возможное "рабочее" значение BUFFERS ~346000. При 347000 уже получаем вышеописанную ошибку. Стартуйте информикс с ключем -v (oninit -v) , ВЕСЬ вывод на экран скопируйте сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 19:29 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Выбегалло Стартуйте информикс с ключем -v (oninit -v) , ВЕСЬ вывод на экран скопируйте сюда. Нормальный старт: BUFFERS 330000 SHMBASE 0x10000000L #oninit -v > /tmp/oninit.ok 2>&1 НЕнормальный старт: BUFFERS 350000 SHMBASE 0x10000000L #oninit -v > /tmp/oninit.bad 2>&1 # diff /tmp/oninit.bad /tmp/oninit.ok Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. PS. не вижу криминала... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 19:49 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Это, похоже, потому что его нет. Сервер стартовал нормально, и скорей всего программы использующие TCP коннекшн будут нормально работать. Проблема с onstat (и другими утилитами, работающими через память), и заключается она в том, что onstat не может приконнектиться к shared memory. Но вы пытаетесь найти ответ на неверный вопрос - почему не аттачатся onstat-ы и пр. утилиты. Возможно, из-за "Contiguous shared memory segment allocation failed at 0xb000000. Allocation retried at 0x42135000." - они думают, что надо аттачиться по адресу из config файла, а адрес был изменен. Вас интересует как добавить буферов ? Вот и добавьте, установите SHMBASE в 0x10000000L, BUFFERS в 500000 и покажите нам вывод oninit -v В таком вот аксепте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 20:16 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
svat2А где можно поподробнее прочесть о методике определения, "куды смотреть"?В документации. svat2ЗЫ. сейчас TBLSTATS = 0 (для повышения производительности), придется включать...Никто не знает снижает-ли TBLSTATS=1 производительность, а если снижает то насколько, на 0.000001%? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 10:55 |
|
||
|
BUFFERS > 400000 - возможно? (Linux 32)
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис svat2А где можно поподробнее прочесть о методике определения, "куды смотреть"? В документации. Спасибо. Журавлев ДенисНикто не знает снижает-ли TBLSTATS=1 производительность, а если снижает то насколько, на 0.000001%? мне пару раз попадались среди нагугленного мнения, что снижает порядка 15%. ТОчно сейчас не скажу, где попадалось, но вот здесь http://cz.org.ua/cms/content/view/16/40/ , к примеру, тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 14:30 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=34181623&tid=1608504]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 369ms |

| 0 / 0 |
