Size: a a a

2020 September 15

Т

Тимофей in pro.cxx
Alex Sandrov
Рискну предположить: boost::asio
Смотрел, но там чисто под сетевое взаимодействие нашел
источник

AM

Alexander Malkov in pro.cxx
Тимофей
Смотрел, но там чисто под сетевое взаимодействие нашел
Там есть возможность использовать в качестве сокета файл


https://www.boost.org/doc/libs/1_74_0/doc/html/boost_asio/overview/posix/local.html
источник

Т

Тимофей in pro.cxx
Alexander Malkov
Там есть возможность использовать в качестве сокета файл


https://www.boost.org/doc/libs/1_74_0/doc/html/boost_asio/overview/posix/local.html
Так у меня обмен через память)
источник

AM

Alexander Malkov in pro.cxx
Тимофей
Так у меня обмен через память)
Ок, значит mmap
источник

ПК

Побитый Кирпич... in pro.cxx
Тимофей
Всем привет! Необходимо реализовать общение сервер - клент, с помощью IPC посредством shared memory. Я это сделал, вопрос в том, как реализовать ожидание между клиентом и сервером в общении, а именно я передаю 2 числа (сервер отправил 1, клиент ее принял и поменял на 2, сервер считал 2 и поменял опять на 1 и так далее они общаются)
Использую библу Boost. Возможно ли реализовать такой алгоритм, чтобы ожидание шло не через while, for, а с помощью задействования каких-то функций из буста или только реально через winapi?
юзай пайпы лучше
источник

ПК

Побитый Кирпич... in pro.cxx
там в boost process есть async_pipe с интеграцией в асио
источник

AM

Alexander Malkov in pro.cxx
Дрюс
мы используем валгринд с дебаггером. он позволяет остановить исполнение программы в любой момент и создать отчет. сравнивая два отчета, можно увидеть, что было выделено в памяти между двумя остановками
неудобно, так как может быть большая потеря производительности..
источник

ПК

Побитый Кирпич... in pro.cxx
Alexander Malkov
Коллеги, всем доброе утро, есть вопрос интересный.. мне нужно в своем приложении профилировать потребление оперативной памяти, как потребление фиксировать всего приложения, так и желательно иметь возможность видеть потребление конкретной функции. valgrind в данном случае не поможет, потому что нужна рантайм аналитика и желательно без дополнительных приложений.. Есть мысли чтобы использовать jemalloc, но надо разобраться как получать с него статистику и возможно ли фиксировать потребление памяти по функциям? В качестве OS - это семейства UNIX: Linux, MacOS. В качестве компилятора, предпочтительно CLang LLVM.
Есть какие-то предложения, готовые решения?
А что такое "потребление памяти по функциям"?
источник

ПК

Побитый Кирпич... in pro.cxx
стековая чтоле?
источник

AM

Alexander Malkov in pro.cxx
Побитый Кирпич
А что такое "потребление памяти по функциям"?
ну вот, например выполняется функция do_function();
мы можем замерить время через std::chrono, сколько потребуется на выполнение данной функции. но с потреблением памяти, дела идут сложнее.
источник

AM

Alexander Malkov in pro.cxx
например, есть у нас асинхронный сервер, и пользователи выполняют запрос, нужно вычислить, сколько потребовалось оперативной памяти на выполнение этого запроса
источник

ПК

Побитый Кирпич... in pro.cxx
Alexander Malkov
ну вот, например выполняется функция do_function();
мы можем замерить время через std::chrono, сколько потребуется на выполнение данной функции. но с потреблением памяти, дела идут сложнее.
Ну это можно сделать если стектрейсы в алокаторе анализировать
источник

AM

Alexander Malkov in pro.cxx
Побитый Кирпич
Ну это можно сделать если стектрейсы в алокаторе анализировать
ну вот я и думаю, либо требуется писать свой аллокатор, либо попробовать как-то кастомизировать под это дело jemalloc или tcmalloc
источник

ПК

Побитый Кирпич... in pro.cxx
только если функция экспортит владение, то получится что алокация была в одной, а деалокация в другой
источник

ПК

Побитый Кирпич... in pro.cxx
Так что в общем случае "функция" не потребляет память кроме как стековую
источник

ПК

Побитый Кирпич... in pro.cxx
например сколько памяти потребляет фабрика объектов?
источник

AM

Alexander Malkov in pro.cxx
и еще момент, аллокатор вызывается, только при
new или malloc
источник

ПК

Побитый Кирпич... in pro.cxx
тут скорее более высокоуровневые сущности потребляют память, а не функции
источник

AM

Alexander Malkov in pro.cxx
а когда мы на стеке создаем переменную, то это не фиксируется..
источник

AM

Alexander Malkov in pro.cxx
Побитый Кирпич
тут скорее более высокоуровневые сущности потребляют память, а не функции
да, согласен, ведь есть еще и запросы в БД и прочие
источник