Snapdragon X - что думаете?
Есть уже владельцы ноутов на этом проце? Что думаете о нём? Стоит купить и попробовать поставить линукс на него? Или стоит пока подождать пока другие купят и проверят?
Есть уже владельцы ноутов на этом проце? Что думаете о нём? Стоит купить и попробовать поставить линукс на него? Или стоит пока подождать пока другие купят и проверят?
В общем есть один процесс, который запускает второй процесс, и OOM killer убивает этот второй процесс, в этой ситуации первый процесс получает 137 как exit code и должен как-то отчитаться об этом пользователю. Конечно прога напишет в лог что «Child process is killed with sigkill», но стоит ли после этого основной программе также завершиться с 137-м кодом? Могут ли из-за этого возникнуть проблемы с совместимостью?
Вопрос конечно странный, но мне не понятно нужно ли вернуть свой номер (скажем 13), или системный 137, какое решение более общепринятое?
Возникло недавно желание разобраться с проблемой 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
На работе есть один комп с перфоманс тэстингом нашего продукта. На входе 4к тестов, на каждом из которых надо отслеживать замедления/ускорения на каком-то множестве коммитов. Всё это запускается раз в сутки, компьютер для этого дела отдельный и никто туда не может залогиниться и создавать лишнюю нагрузку. Софтина для каждого теста запускается в 1 процесс и 8 потоков (у проца 8 потоков с гипертредингом), с высшим приоритетом, I/O с диска не учитывается. Производится 3 таких запуска и выбирается минимальное из 3-х запусков CPU time. Оно считается «правильным» для ревизии, и далее производится бисекция по коммитам для автоматического поиска виновных. Тесты занимают от пары секунд до пары минут.
Собственно я понимаю что невозможно в многозадачной ОС надёжно измерять время, но может есть какие-то способы уменьшить вариацию времени выполнения? Хочется вариацию не более 5 процентов. На данный момент ОС на компе - Win 10, но я думаю есть ли смысл попробовать какой-нибудь Debian с rt ядром? Я с realtime системой не имел дела, может ли она дать то что мне нужно?
Есть один 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 с увеличением буферов системы, с отрубанием шифрования, и кучу всего ещё - эффект просто нулевой. Будто я конфиги от другой системы правил. Даже хуже не становится. Есть какие-то идеи?
Купил с али адаптер 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/LinuxDmesg:
[ 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 и есть ивенты при разрыве соединения/соединении