[personal profile] dememax
Продолжая разбираться с OpenOffice'ом для нужд конвертации документов из командной строки, наткнулся на забавнейшую особенность.
Вызывая скрипт unoconv из 5-ти параллельных потоков, в каждом из которых последовательно много раз конвертируется свой уникальный документ (odt, doc, xls, ...), не удаётся достичь полной загрузки двух ядер процессора.

Причём, это не зависит от того, какой из двух сценариев используется:
  1. перед нагрузочным тестом, с помощью опции --listener запускается один общий экземпляр soffice.bin, а все запросы на конвертирование проходят через него;
  2. каждый запрос на конвертирование запускается с уникальным значением опции --connection (каждый раз меняется номер порта), что приводит к запуску отдельного экземпляра soffice.bin.

Upd1: Коллеги надоумили попробовать поиграться с разными пользователями. (Спасибо вам, ребята!)
Если из-под одного пользователя запустить в разных терминалах soffice с разными номерами порта:
  1. soffice "-accept=socket,host=localhost,port=20123;urp;StarOffice.ComponentContext" -invisible -nologo -nodefault -headless -norestore -nofirststartwizard
  2. soffice "-accept=socket,host=localhost,port=20124;urp;StarOffice.ComponentContext" -invisible -nologo -nodefault -headless -norestore -nofirststartwizard
Первая команда подвисает, а вторая быстро выходит, эффект такой:
dememax@dememax-laptop ~ $ netstat -a | grep 2012
tcp     0    0 localhost:20123      *:*      LISTEN
tcp     0    0 localhost:20124      *:*      LISTEN
dememax@dememax-laptop ~ $ lsof -i TCP@localhost:20123
COMMAND     PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
soffice.b 20979 dememax   31u  IPv4 129106      0t0  TCP localhost:20123 (LISTEN)
dememax@dememax-laptop ~ $ lsof -i TCP@localhost:20124
COMMAND     PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
soffice.b 20979 dememax   27u  IPv4 129047      0t0  TCP localhost:20124 (LISTEN)
Т.е. один экземпляр soffice обслуживает оба соединения.
И если теперь запускать два скрипта из под разных пользователей, каждый пользователь будет идти на свой порт - выигрыша не наблюдается, снова загружено только одно ядро.

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

Profile

dememax

May 2023

S M T W T F S
 123456
78910111213
14151617181920
21 2223 24252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 5th, 2026 12:57 pm
Powered by Dreamwidth Studios