Russian Qt Forum
Ноябрь 25, 2024, 10:45
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Qt vs фрагментация памяти
Страниц: [
1
]
2
3
4
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Qt vs фрагментация памяти (Прочитано 22032 раз)
Amigo_sa
Гость
Qt vs фрагментация памяти
«
:
Март 17, 2010, 10:48 »
Доброго дня!
Мучает меня 1 вопрос на понимание скорее: про фрагментацию памяти в операционной системе. Есть задача - написать высокопроизводительный сервер, который должен работать очень устойчиво и 24 на 7. Точнее она уже решена. Но старшие товарищи до ужаса боятся использовать в ней какие либо сторонние либы вроде Qt, поэтому было написано куча велосипедов - начиная от работы с сетью и заканчиваю машиной состояний. Все написано в статике, с кучей ухищрений.
Собственно вопросы: так ли опасна фрагментация? Неужели менеджеры памяти не умеют освобождать неиспользованные страницы? Насколько оправдано использовать Qt в высокопроизводительных серверных программах?
Буду благодарен, если подскажете какую нибудь книгу или ресурс на тему, как ПРАВИЛЬНО разрабатывать архитектуру, потому что подходов миллион - не могу пока отличить незабудки от ... (как там у классика
)
Записан
garryHotDog
Гость
Re: Qt vs фрагментация памяти
«
Ответ #1 :
Март 17, 2010, 13:29 »
для какой ОС разработано ПО??? если Win32 то есть хорошая книга "Xp из нутри" или как то так....google ее знает )))
Записан
Amigo_sa
Гость
Re: Qt vs фрагментация памяти
«
Ответ #2 :
Март 17, 2010, 13:36 »
Цитата: garryHotDog от Март 17, 2010, 13:29
для какой ОС разработано ПО??? если Win32 то есть хорошая книга "Xp из нутри" или как то так....google ее знает )))
ПО для Линукса, за книгу спасибо)
Записан
Amigo_sa
Гость
Re: Qt vs фрагментация памяти
«
Ответ #3 :
Март 18, 2010, 18:12 »
Что то странное... Какой вопрос не задам - или сложный или не в тему
Почти никто не отвечает...
Записан
niXman
Гость
Re: Qt vs фрагментация памяти
«
Ответ #4 :
Март 18, 2010, 18:19 »
Цитировать
то то странное... Какой вопрос не задам - или сложный или не в тему Почти никто не отвечает...
так вы задайте нормальный вопрос.
а то у вас настолько широкая область вопроса, что мне подумалось, что вы сами не знаете что спросить. или просто от скуки задаете вопросы.
Записан
BigZ
Гость
Re: Qt vs фрагментация памяти
«
Ответ #5 :
Март 18, 2010, 18:27 »
Цитата: Amigo_sa от Март 17, 2010, 10:48
Собственно вопросы: так ли опасна фрагментация? Неужели менеджеры памяти не умеют освобождать неиспользованные страницы? Насколько оправдано использовать Qt в высокопроизводительных серверных программах?
Фрагментация опасна тем, что может в нужный момент не оказаться
куска памяти подходящего размера. Менеджеры памяти умеют освобождать память не они не занимаются дефрагментацией памяти. Сервер, который работает в одном процессе не может быть гарантированно отказо-устойчивым, на чём бы он не был написан. Гарантировано, отказо-устойчивым может быть только кластер серверных процессов управляемых несколькими хостами. Если один процесс дохнет, хост поднимает новый. Если дохнет хост, его поднимает другой хост и т.д. Qt- для написания такой конструкции вполне подходит.
Записан
BRE
Гость
Re: Qt vs фрагментация памяти
«
Ответ #6 :
Март 18, 2010, 18:31 »
Цитата: niXman от Март 18, 2010, 18:19
так вы задайте нормальный вопрос.
а то у вас настолько широкая область вопроса, что мне подумалось, что вы сами не знаете что спросить. или просто от скуки задаете вопросы.
Данный вопрос можно перефразировать:
"Старшие товарищи рисуют картины с помощью масляных красок. Скажите, а возможно ли с помощью фломастеров рисовать картины, насколько это оправдано?"
В принципе можно, только для чего нужны лишние зависимости, для чего в высокопроизводительных серверах использовать Qt?
А про фрагментацию памяти... Ну это опять же от писателя зависит, как он будет с памятью работать.
Записан
Amigo_sa
Гость
Re: Qt vs фрагментация памяти
«
Ответ #7 :
Март 18, 2010, 18:34 »
Цитата: niXman от Март 18, 2010, 18:19
Цитировать
то то странное... Какой вопрос не задам - или сложный или не в тему Почти никто не отвечает...
так вы задайте нормальный вопрос.
а то у вас настолько широкая область вопроса, что мне подумалось, что вы сами не знаете что спросить. или просто от скуки задаете вопросы.
Правильная формулировка вопроса - уже залог правильного ответа. Конечно, я сознаю, что спрашиваю не совсем четко. Ситуация такая: руководство не хочет писать высокопроизводительные проги для "сервера 24 на 7" с нагрузкой несколько сот транзакций в секунду, используя сторонние либы, в том числе qt. Мотивирует это тем, что боится использовать динамику вообще в коде. Я сомневаюсь, что нельзя использовать Qt для таких задач и хотел узнать Ваше мнение.
Записан
BRE
Гость
Re: Qt vs фрагментация памяти
«
Ответ #8 :
Март 18, 2010, 18:36 »
Что значит:
Цитата: Amigo_sa от Март 18, 2010, 18:34
боится использовать динамику вообще в коде.
В смысле разделяемые библиотеки?
Записан
Amigo_sa
Гость
Re: Qt vs фрагментация памяти
«
Ответ #9 :
Март 18, 2010, 18:39 »
Цитата: BRE от Март 18, 2010, 18:36
Что значит:
Цитата: Amigo_sa от Март 18, 2010, 18:34
боится использовать динамику вообще в коде.
В смысле разделяемые библиотеки?
Даже больше - любые new, delete, memcpy, и вообще работу с кучей. А так как в сторонных либах в частности в Qt много подобных конструкций - то их всех в сад.
Записан
Amigo_sa
Гость
Re: Qt vs фрагментация памяти
«
Ответ #10 :
Март 18, 2010, 18:41 »
Цитата: BigZ от Март 18, 2010, 18:27
Сервер, который работает в одном процессе не может быть гарантированно отказо-устойчивым, на чём бы он не был написан. Гарантировано, отказо-устойчивым может быть только кластер серверных процессов управляемых несколькими хостами. Если один процесс дохнет, хост поднимает новый. Если дохнет хост, его поднимает другой хост и т.д. Qt- для написания такой конструкции вполне подходит.
Большое спасибо за идею! обязательно погуглю про кластеры!
Записан
BRE
Гость
Re: Qt vs фрагментация памяти
«
Ответ #11 :
Март 18, 2010, 18:43 »
Цитата: Amigo_sa от Март 18, 2010, 18:39
Даже больше - любые new, delete, memcpy, и вообще работу с кучей. А так как в сторонных либах в частности в Qt много подобных конструкций - то их всех в сад.
Да ладно...
Может уже написан свой менеджер памяти, который и используется? Как-то я пока не представляю, как можно обойтись без динамической памяти в сложной программе.
Записан
Amigo_sa
Гость
Re: Qt vs фрагментация памяти
«
Ответ #12 :
Март 18, 2010, 18:47 »
Цитата: BRE от Март 18, 2010, 18:43
Цитата: Amigo_sa от Март 18, 2010, 18:39
Даже больше - любые new, delete, memcpy, и вообще работу с кучей. А так как в сторонных либах в частности в Qt много подобных конструкций - то их всех в сад.
Да ладно...
Может уже написан свой менеджер памяти, который и используется? Как-то я пока не представляю, как можно обойтись без динамической памяти в сложной программе.
Уваряю, что именно так мне и говорили. Все рабочий потоки созданы на стеке, сокеты, классы с логикой... даже буферы памяти и строки переписаны таким образом, что в конструкторе резервируют свой максимальный размер, а если вдруг ктото допишет байт сверх допустимого, то генерируется эксепшн.
Записан
BRE
Гость
Re: Qt vs фрагментация памяти
«
Ответ #13 :
Март 18, 2010, 18:50 »
Цитата: Amigo_sa от Март 18, 2010, 18:47
в конструкторе резервируют свой максимальный размер....
А ну все таки резервируют, а то ты заставил меня сильно задуматься, как вы там на стеке все размещаете.
Записан
BigZ
Гость
Re: Qt vs фрагментация памяти
«
Ответ #14 :
Март 18, 2010, 18:50 »
Цитата: Amigo_sa от Март 18, 2010, 18:47
Уваряю, что именно так мне и говорили. Все рабочий потоки созданы на стеке, сокеты, классы с логикой... даже буферы памяти и строки переписаны таким образом, что в конструкторе резервируют свой максимальный размер, а если вдруг ктото допишет байт сверх допустимого, то генерируется эксепшн.
А Stack Overflow старшие товарищи не боятся получить вместо Out of Memory?
Записан
Страниц: [
1
]
2
3
4
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...