LINUX.ORG.RU

Сообщения olologin

 

Snapdragon X - что думаете?

Форум — Talks

Есть уже владельцы ноутов на этом проце? Что думаете о нём? Стоит купить и попробовать поставить линукс на него? Или стоит пока подождать пока другие купят и проверят?

 ,

olologin
()

Возвращать ли зарезервированные системой exit коды из своей программы

Форум — Development

В общем есть один процесс, который запускает второй процесс, и OOM killer убивает этот второй процесс, в этой ситуации первый процесс получает 137 как exit code и должен как-то отчитаться об этом пользователю. Конечно прога напишет в лог что «Child process is killed with sigkill», но стоит ли после этого основной программе также завершиться с 137-м кодом? Могут ли из-за этого возникнуть проблемы с совместимостью?

Вопрос конечно странный, но мне не понятно нужно ли вернуть свой номер (скажем 13), или системный 137, какое решение более общепринятое?

 ,

olologin
()

dl и dependency hell в рантайме

Форум — Development

Возникло недавно желание разобраться с проблемой Dependency hell’а на онтопике, с этой проблемой на оффтопике кое-как разобрались с помошью SxS.

Речь вот о чём: У нас есть приложение main.exe которое линкуется с двумя плагинами (в линктайме или через dlopen, не важно): plugin1.so, plugin2.so.

Но каждый из этих плагинов использует библиотеку lib, причём разных мажорных версий, т.е lib1.so и lib2.so. С тем же успехом это могут быть совсем разные библиотеки но с одинаковым символом.

Я тут поигрался с примерами и оказывается что в линуксе райнтайм линкер тупо заставляет весь процесс иметь одну реализацию для одного символа, без учёта того откуда этот символ требуется.

Это конечно имеет смысл в определённых случаях, например с malloc/free, но после Windows это забавно выглядит. На винде нам достаточно или использовать SxS (Что мне не нравится, но это хотяб решение), или использовать lib с разными именами (опять же lib1.dll и lib2.dll). Система автоматически свяжет в рантайме все запрошенные символы из plugin2 с символами из lib2, и все символы из plugin1 с символами из lib1. Plugin1/Plugin2 не будут ничего знать о символах из соседнего плагина.

Я так понимаю что в линуксе это можно решить только если иметь доступ к исходникам lib и собрать обе версии с версионированным символами? Может ли использование lib через dlopen помочь? Просто спрашиваю чтоб убедиться что я ничего не упустил. Кажется -BDirect помогает бороться с этим но в Solaris.

Собственно интерес у меня в этом всём от того что я работаю в компании которая разрабатывает lib.dll/so. Пока основные заказчики на windows, но хочется разобраться с этой тонкостью на линуксе.

Ссылки по теме: https://habr.com/ru/post/220961 http://cryptonector.com/2012/02/dll-hell-on-linux-but-not-solaris/

Если интересно глянуть на конкретные исходники - накидал вот: https://github.com/olologin/dependency_hell_runtime

 , ,

olologin
()

Уменьшить вариацию времени выполнения программы

Форум — General

На работе есть один комп с перфоманс тэстингом нашего продукта. На входе 4к тестов, на каждом из которых надо отслеживать замедления/ускорения на каком-то множестве коммитов. Всё это запускается раз в сутки, компьютер для этого дела отдельный и никто туда не может залогиниться и создавать лишнюю нагрузку. Софтина для каждого теста запускается в 1 процесс и 8 потоков (у проца 8 потоков с гипертредингом), с высшим приоритетом, I/O с диска не учитывается. Производится 3 таких запуска и выбирается минимальное из 3-х запусков CPU time. Оно считается «правильным» для ревизии, и далее производится бисекция по коммитам для автоматического поиска виновных. Тесты занимают от пары секунд до пары минут.

Собственно я понимаю что невозможно в многозадачной ОС надёжно измерять время, но может есть какие-то способы уменьшить вариацию времени выполнения? Хочется вариацию не более 5 процентов. На данный момент ОС на компе - Win 10, но я думаю есть ли смысл попробовать какой-нибудь Debian с rt ядром? Я с realtime системой не имел дела, может ли она дать то что мне нужно?

 ,

olologin
()

OpenVPN в 5 раз медленнее обычного соединения

Форум — Admin

Есть один debian buster в офисе, на котором установлен openvpn, порт openvpn’а проброшен из офиса. Так же как и порт 5201 для iperf3. Подключаюсь я из последней убунты 19.04. Офис и домашний комп в одном городе, так что мы практически в одной локалке.

Конфиг openvpn:

port 1194
proto udp
dev tun

ca ca.crt
cert server.crt
key server.key
dh dh2048.pem

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push "route 192.168.0.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"

keepalive 10 120

cipher AES-256-CBC

user nobody
group nogroup

persist-key
persist-tun
status openvpn-status.log
verb 4
explicit-exit-notify 1
status /tmp/openvpn-status.log

iperf3 до проброшенного порта с iperf3

user@E420:~$ iperf3 -c *.*.*.*
Connecting to host *.*.*.*, port 5201
[  5] local 192.168.1.109 port 33874 connected to *.*.*.* port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  11.8 MBytes  98.7 Mbits/sec    0    128 KBytes       
[  5]   1.00-2.00   sec  11.3 MBytes  95.1 Mbits/sec    0    150 KBytes       
[  5]   2.00-3.00   sec  11.5 MBytes  96.6 Mbits/sec    0    171 KBytes       
[  5]   3.00-4.00   sec  11.4 MBytes  95.6 Mbits/sec    0    180 KBytes       
[  5]   4.00-5.00   sec  11.2 MBytes  93.5 Mbits/sec    0    188 KBytes       
[  5]   5.00-6.00   sec  11.5 MBytes  96.1 Mbits/sec    0    188 KBytes       
[  5]   6.00-7.00   sec  11.4 MBytes  95.6 Mbits/sec    0    188 KBytes       
[  5]   7.00-8.00   sec  11.9 MBytes  99.7 Mbits/sec    0    277 KBytes       
[  5]   8.00-9.00   sec  11.0 MBytes  92.5 Mbits/sec    0    277 KBytes       
[  5]   9.00-10.00  sec  11.6 MBytes  97.1 Mbits/sec    0    277 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   115 MBytes  96.1 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   113 MBytes  94.8 Mbits/sec                  receiver

Теперь до того же компа через openvpn:

user@E420:~$ iperf3 -c 192.168.0.17
Connecting to host 192.168.0.17, port 5201
[  5] local 10.8.0.6 port 58546 connected to 192.168.0.17 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  2.99 MBytes  25.1 Mbits/sec    1   1.33 KBytes       
[  5]   1.00-2.00   sec  2.74 MBytes  22.9 Mbits/sec  133   1.33 KBytes       
[  5]   2.00-3.00   sec  2.49 MBytes  20.9 Mbits/sec   69   1.33 KBytes       
[  5]   3.00-4.00   sec  2.74 MBytes  22.9 Mbits/sec  144   1.33 KBytes       
[  5]   4.00-5.00   sec  2.55 MBytes  21.4 Mbits/sec  160   1.33 KBytes       
[  5]   5.00-6.00   sec  2.49 MBytes  20.9 Mbits/sec  158   1.33 KBytes       
[  5]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec    1   1.33 KBytes       
[  5]   7.00-8.00   sec  2.74 MBytes  23.0 Mbits/sec  158   1.33 KBytes       
[  5]   8.00-9.00   sec  2.55 MBytes  21.4 Mbits/sec  160   1.33 KBytes       
[  5]   9.00-10.00  sec  2.49 MBytes  20.9 Mbits/sec  158   1.33 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  23.8 MBytes  19.9 Mbits/sec  1142             sender
[  5]   0.00-10.00  sec  23.8 MBytes  19.9 Mbits/sec                  receiver

Даже решил протестить l2tp который был уже настроен в офисе, и даже он оказывается немного быстрее:

Connecting to host 192.168.0.17, port 5201
[  5] local 192.168.10.1 port 47734 connected to 192.168.0.17 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  4.27 MBytes  35.8 Mbits/sec    8   38.5 KBytes       
[  5]   1.00-2.00   sec  4.07 MBytes  34.2 Mbits/sec    8   31.9 KBytes       
[  5]   2.00-3.01   sec  4.28 MBytes  35.7 Mbits/sec   10   41.2 KBytes       
[  5]   3.01-4.00   sec  4.17 MBytes  35.2 Mbits/sec    6   38.5 KBytes       
[  5]   4.00-5.00   sec  4.19 MBytes  35.1 Mbits/sec    8   33.2 KBytes       
[  5]   5.00-6.00   sec  4.17 MBytes  35.0 Mbits/sec    5   31.9 KBytes       
[  5]   6.00-7.00   sec  4.13 MBytes  34.6 Mbits/sec    5   34.5 KBytes       
[  5]   7.00-8.00   sec  4.25 MBytes  35.7 Mbits/sec    7   34.5 KBytes       
[  5]   8.00-9.00   sec  4.25 MBytes  35.7 Mbits/sec    5   31.9 KBytes       
[  5]   9.00-10.00  sec  4.16 MBytes  34.9 Mbits/sec    7   30.5 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  41.9 MBytes  35.2 Mbits/sec   69             sender
[  5]   0.00-10.00  sec  41.9 MBytes  35.1 Mbits/sec                  receiver

Пробовал все трюки из https://serverfault.com/a/927729/535800 с увеличением буферов системы, с отрубанием шифрования, и кучу всего ещё - эффект просто нулевой. Будто я конфиги от другой системы правил. Даже хуже не становится. Есть какие-то идеи?

 ,

olologin
()

Realtek r8152 постоянно реконнектится если он воткнут при запуске ОС

Форум — Linux-hardware

Купил с али адаптер USB-Ethernet на Realtek r8152, и всё бы хорошо, если втыкаешь в комп с запущенной ОС всё работает отлично и на полной скорости, но вот если ОС была запущена с воткнутым адаптером - начинаются постоянные реконнекты. Причём если его вынуть и вставить в тот же порт - всё начинает работать идеально. Т.е проблема как-то связана с запуском системы.

ОС - Debian Stretch. Ядро

Linux debian1 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64 GNU/Linux

Dmesg:

[ 12.228505] r8152: loading out-of-tree module taints kernel.
[ 12.229483] usbcore: registered new interface driver r8152
[ 12.318856] usb 3-2.4: reset high-speed USB device number 4 using ehci-pci
[ 12.485312] r8152 3-2.4:1.0 eth0: v2.09.00 (2017/08/21)
[ 12.485315] r8152 3-2.4:1.0 eth0: This product is covered by one or more of the following patents: US6,570,884, US6,115,776, and US6,327,625.
[ 12.489952] usbcore: registered new interface driver cdc_ether
[ 13.054437] Adding 5858300k swap on /dev/sda5. Priority:-1 extents:1 across:5858300k FS
[ 13.107585] EXT4-fs (sda6): mounted filesystem with ordered data mode. Opts: (null)
[ 13.280075] floppy0: no floppy controllers found
[ 13.444964] r8152 3-2.4:1.0 enx00e04c68006a: renamed from eth0
[ 25.323920] IPv6: ADDRCONF(NETDEV_UP): enx00e04c68006a: link is not ready
[ 25.332487] IPv6: ADDRCONF(NETDEV_UP): enx00e04c68006a: link is not ready
[ 25.363705] r8152 3-2.4:1.0 enx00e04c68006a: carrier on
[ 25.363722] IPv6: ADDRCONF(NETDEV_CHANGE): enx00e04c68006a: link becomes ready
[ 86.498696] r8152 3-2.4:1.0 enx00e04c68006a: carrier off
[ 100.536995] r8152 3-2.4:1.0 enx00e04c68006a: carrier on
[ 102.683454] r8152 3-2.4:1.0 enx00e04c68006a: carrier off
[ 119.184080] r8152 3-2.4:1.0 enx00e04c68006a: carrier on
[ 125.427705] r8152 3-2.4:1.0 enx00e04c68006a: carrier off
[ 139.526354] r8152 3-2.4:1.0 enx00e04c68006a: carrier on
[ 141.132447] r8152 3-2.4:1.0 enx00e04c68006a: carrier off
[ 157.597714] r8152 3-2.4:1.0 enx00e04c68006a: carrier on
[ 250.171318] r8152 3-2.4:1.0 enx00e04c68006a: carrier off
[ 264.170763] r8152 3-2.4:1.0 enx00e04c68006a: carrier on
[ 267.507029] r8152 3-2.4:1.0 enx00e04c68006a: carrier off
[ 281.410521] r8152 3-2.4:1.0 enx00e04c68006a: carrier on
[ 285.764174] r8152 3-2.4:1.0 enx00e04c68006a: carrier off
[ 299.674468] r8152 3-2.4:1.0 enx00e04c68006a: carrier on
[ 303.904214] r8152 3-2.4:1.0 enx00e04c68006a: carrier off
[ 317.877783] r8152 3-2.4:1.0 enx00e04c68006a: carrier on
[ 319.962530] r8152 3-2.4:1.0 enx00e04c68006a: carrier off
[ 336.371308] r8152 3-2.4:1.0 enx00e04c68006a: carrier on
[ 338.261249] r8152 3-2.4:1.0 enx00e04c68006a: carrier off
[ 354.642913] r8152 3-2.4:1.0 enx00e04c68006a: carrier on

Вот все эти carrier on/off и есть ивенты при разрыве соединения/соединении

 , ,

olologin
()

RSS подписка на новые темы