LINUX.ORG.RU

ктото делал сравнительный анализ реализаций IPC на шаренной памяти + спинлок и unix sockets + select()

 , , ,


0

2

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

★★★★★

Вас сравнение по какому параметру интересует? По бакланизму вроде первый в разы лучше.

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Меня интересует баланс между пропускной способностью и загрузкой проца. латентность на текущем этапе не интересует.

Сейчас данные льются со скоростью 20 Мб/сек и это процентов на 10 загружает проц. меня это смущает. я ожидал что при такой нагрузке загрузка проца не должна подыматся выше 1%.

cvv ★★★★★
() автор топика
Последнее исправление: cvv (всего исправлений: 2)
Ответ на: комментарий от cvv

Лучше максимальный performance мерять, а то мало ли чего там 10%. У меня так бывает если в не правильных местах мышкой подвигать

vertexua ★★★★★
()
Ответ на: комментарий от tailgunner

ну текущая реализация работает так: ридер читает из usb через libusb и пишет в шаренную память а потом врайтер вычитывает из шареной памяти и пишет на диск. но при этом у меня еще есть задача опционально отвязать все это от диска. не уверен что sendfile здесь поможет.

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

ридер читает из usb через libusb

Да, здесь вряд ли есть mmap... хотя я бы проверил :)

не уверен что sendfile здесь поможет.

Ну, если ты склонен к извр^Wнеобычным решениям: мапишь файл, читаешь из USB данные в замапленный кусок, делаешь sendfile замапленного файла. Сам файл может жить в tmpfs.

Еще можно попробовать splice.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

за splice() спасибо. это нововведение меня обошло стороной

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

а зачем тебе select для случая с unix sockets? читай в блокируемом режиме да и всё. или у тебя там ещё куча сокетов, на события которых нужно реагировать?

nanoolinux ★★★★
()
Ответ на: комментарий от mv

текущая реализация заимплеменчена какимто индусом. спинлок пользуется для синхронизации ридера и врайтера. ты думаешь что там можно просто флагами обойтись?

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

текущая реализация заимплеменчена какимто индусом. спинлок пользуется для синхронизации ридера и врайтера. ты думаешь что там можно просто флагами обойтись?

Я думаю, что там просто CAS (compare and swap) можно обойтись. И даже просто swap, без compare.

mv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.