Russian Qt Forum
Ноябрь 25, 2024, 10:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3 4   Вниз
  Печать  
Автор Тема: Qt vs фрагментация памяти  (Прочитано 22015 раз)
Amigo_sa
Гость
« : Март 17, 2010, 10:48 »

Доброго дня!
Мучает меня 1 вопрос на понимание скорее: про фрагментацию памяти в операционной системе. Есть задача - написать высокопроизводительный сервер, который должен работать очень устойчиво и 24 на 7. Точнее она уже решена. Но старшие товарищи до ужаса боятся использовать в ней какие либо сторонние либы вроде Qt, поэтому было написано куча велосипедов - начиная от работы с сетью и заканчиваю машиной состояний. Все написано в статике, с кучей ухищрений.
Собственно вопросы: так ли опасна фрагментация? Неужели менеджеры памяти не умеют освобождать неиспользованные страницы? Насколько оправдано использовать Qt в высокопроизводительных серверных программах?
Буду благодарен, если подскажете какую нибудь книгу или ресурс на тему, как ПРАВИЛЬНО разрабатывать архитектуру, потому что подходов миллион - не могу пока отличить незабудки от ... (как там у классика  Улыбающийся)
Записан
garryHotDog
Гость
« Ответ #1 : Март 17, 2010, 13:29 »

для какой ОС разработано ПО??? если Win32 то есть хорошая книга "Xp из нутри" или как то так....google ее знает )))
Записан
Amigo_sa
Гость
« Ответ #2 : Март 17, 2010, 13:36 »

для какой ОС разработано ПО??? если Win32 то есть хорошая книга "Xp из нутри" или как то так....google ее знает )))
ПО для Линукса, за книгу спасибо)
Записан
Amigo_sa
Гость
« Ответ #3 : Март 18, 2010, 18:12 »

Что то странное... Какой вопрос не задам - или сложный или не в тему  Непонимающий Почти никто не отвечает...
Записан
niXman
Гость
« Ответ #4 : Март 18, 2010, 18:19 »

Цитировать
то то странное... Какой вопрос не задам - или сложный или не в тему   Почти никто не отвечает...
так вы задайте нормальный вопрос.
а то у вас настолько широкая область вопроса, что мне подумалось, что вы сами не знаете что спросить. или просто от скуки задаете вопросы.
Записан
BigZ
Гость
« Ответ #5 : Март 18, 2010, 18:27 »

Собственно вопросы: так ли опасна фрагментация? Неужели менеджеры памяти не умеют освобождать неиспользованные страницы? Насколько оправдано использовать Qt в высокопроизводительных серверных программах?
Фрагментация опасна тем, что может в нужный момент не оказаться
куска памяти подходящего размера. Менеджеры памяти умеют освобождать память не они не занимаются дефрагментацией памяти. Сервер, который работает в одном процессе не может быть гарантированно отказо-устойчивым, на чём бы он не был написан. Гарантировано, отказо-устойчивым может быть только кластер серверных процессов управляемых несколькими хостами. Если один процесс дохнет, хост поднимает новый. Если дохнет хост, его поднимает другой хост и т.д. Qt- для написания такой конструкции вполне подходит.
 
Записан
BRE
Гость
« Ответ #6 : Март 18, 2010, 18:31 »

так вы задайте нормальный вопрос.
а то у вас настолько широкая область вопроса, что мне подумалось, что вы сами не знаете что спросить. или просто от скуки задаете вопросы.

Данный вопрос можно перефразировать:
"Старшие товарищи рисуют картины с помощью масляных красок. Скажите, а возможно ли с помощью фломастеров рисовать картины, насколько это оправдано?"  Улыбающийся

В принципе можно, только для чего нужны лишние зависимости, для чего в высокопроизводительных серверах использовать Qt?
А про фрагментацию памяти... Ну это опять же от писателя зависит, как он будет с памятью работать.
Записан
Amigo_sa
Гость
« Ответ #7 : Март 18, 2010, 18:34 »

Цитировать
то то странное... Какой вопрос не задам - или сложный или не в тему   Почти никто не отвечает...
так вы задайте нормальный вопрос.
а то у вас настолько широкая область вопроса, что мне подумалось, что вы сами не знаете что спросить. или просто от скуки задаете вопросы.
Правильная формулировка вопроса - уже залог правильного ответа. Конечно, я сознаю, что спрашиваю не совсем четко. Ситуация такая: руководство не хочет писать высокопроизводительные проги для "сервера 24 на 7" с нагрузкой несколько сот транзакций в секунду, используя сторонние либы, в том числе qt.  Мотивирует это тем, что боится использовать динамику вообще в коде. Я сомневаюсь, что нельзя использовать Qt для таких задач и хотел узнать Ваше мнение.
Записан
BRE
Гость
« Ответ #8 : Март 18, 2010, 18:36 »

Что значит:
боится использовать динамику вообще в коде.

В смысле разделяемые библиотеки?
Записан
Amigo_sa
Гость
« Ответ #9 : Март 18, 2010, 18:39 »

Что значит:
боится использовать динамику вообще в коде.

В смысле разделяемые библиотеки?

Даже больше - любые new, delete, memcpy, и вообще работу с кучей. А так как в сторонных либах в частности в Qt много подобных конструкций - то их всех в сад.
Записан
Amigo_sa
Гость
« Ответ #10 : Март 18, 2010, 18:41 »

Сервер, который работает в одном процессе не может быть гарантированно отказо-устойчивым, на чём бы он не был написан. Гарантировано, отказо-устойчивым может быть только кластер серверных процессов управляемых несколькими хостами. Если один процесс дохнет, хост поднимает новый. Если дохнет хост, его поднимает другой хост и т.д. Qt- для написания такой конструкции вполне подходит.
Большое спасибо за идею! обязательно погуглю про кластеры!
Записан
BRE
Гость
« Ответ #11 : Март 18, 2010, 18:43 »

Даже больше - любые new, delete, memcpy, и вообще работу с кучей. А так как в сторонных либах в частности в Qt много подобных конструкций - то их всех в сад.
Да ладно...  Строит глазки
Может уже написан свой менеджер памяти, который и используется? Как-то я пока не представляю, как можно обойтись без динамической памяти в сложной программе.
Записан
Amigo_sa
Гость
« Ответ #12 : Март 18, 2010, 18:47 »

Даже больше - любые new, delete, memcpy, и вообще работу с кучей. А так как в сторонных либах в частности в Qt много подобных конструкций - то их всех в сад.
Да ладно...  Строит глазки
Может уже написан свой менеджер памяти, который и используется? Как-то я пока не представляю, как можно обойтись без динамической памяти в сложной программе.

Уваряю, что именно так мне и говорили. Все рабочий потоки созданы на стеке, сокеты, классы с логикой... даже буферы памяти и строки переписаны таким образом, что в конструкторе резервируют свой максимальный размер, а если вдруг ктото допишет байт сверх допустимого, то генерируется эксепшн.
Записан
BRE
Гость
« Ответ #13 : Март 18, 2010, 18:50 »

в конструкторе резервируют свой максимальный размер....
А ну все таки резервируют, а то ты заставил меня сильно задуматься, как  вы там на стеке все размещаете.  Улыбающийся
Записан
BigZ
Гость
« Ответ #14 : Март 18, 2010, 18:50 »

Уваряю, что именно так мне и говорили. Все рабочий потоки созданы на стеке, сокеты, классы с логикой... даже буферы памяти и строки переписаны таким образом, что в конструкторе резервируют свой максимальный размер, а если вдруг ктото допишет байт сверх допустимого, то генерируется эксепшн.
А Stack Overflow старшие товарищи не боятся получить вместо Out of Memory?Улыбающийся
Записан
Страниц: [1] 2 3 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.203 секунд. Запросов: 21.