Робот, запускающий Linux, не спешит загружаться

Я работаю с автоматизированной платформой (для использования на конкуренции RoboCup), и мы выполняем Сервер Ubuntu 13.10. Очень важно во время соответствий, что наши роботы могут загрузиться как можно быстрее. Кроме того, если они подвергают циклу включения и выключения питания во время падения, затем робот имеет 10 секунд для возвращения к жизни прежде чем быть взятым от поля.

В настоящее время время начальной загрузки составляет приблизительно 15 секунд, и я хотел бы знать то, что я могу сделать для сокращения того времени. Надо надеяться, я могу изучить что-то также.

Вот полный вывод dmesg то, которое я предполагаю, помогает отнести повреждение, что идет каждый раз на шаг. В выводе существует несколько разрывов:

  • В 0,41 существует разрыв приблизительно 0,8 секунд
  • В 3,64 существует разрыв приблизительно 2,8 секунд
  • В 9,67 существует разрыв приблизительно 0,8 секунд
  • В 12,9 существует разрыв приблизительно 1,4 секунд

eth не требуется хотя wlan .

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


ОТРЕДАКТИРУЙТЕ я изменил свой двоичный файл (который запускается автоматически как новомодное задание) записать в системный журнал. Это показывает, начиная с первого зарегистрированного сообщения, после того, как приводится в действие:

Oct 30 12:51:52 darwin6 kernel: imklog 5.8.11, log source = /proc/kmsg started.
....
Oct 30 12:52:12 darwin6 kernel: [   34.276716] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Oct 30 12:52:13 darwin6 dhclient: Internet Systems Consortium DHCP Client 4.2.4
Oct 30 12:52:13 darwin6 dhclient: Copyright 2004-2012 Internet Systems Consortium.
Oct 30 12:52:13 darwin6 dhclient: All rights reserved.
Oct 30 12:52:13 darwin6 dhclient: For info, please visit https://www.isc.org/software/dhcp/
Oct 30 12:52:13 darwin6 dhclient: 
Oct 30 12:52:13 darwin6 dhclient: Listening on LPF/wlan0/00:0d:f0:95:0d:4d
Oct 30 12:52:13 darwin6 dhclient: Sending on   LPF/wlan0/00:0d:f0:95:0d:4d
Oct 30 12:52:13 darwin6 dhclient: Sending on   Socket/fallback
Oct 30 12:52:13 darwin6 dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 3 (xid=0x3cd422f3)
Oct 30 12:52:13 darwin6 dhclient: DHCPREQUEST of 192.168.0.3 on wlan0 to 255.255.255.255 port 67 (xid=0x3cd422f3)
Oct 30 12:52:13 darwin6 dhclient: DHCPOFFER of 192.168.0.3 from 192.168.0.1
Oct 30 12:52:13 darwin6 avahi-daemon[833]: Joining mDNS multicast group on interface wlan0.IPv6 with address fe80::20d:f0ff:fe95:d4d.
Oct 30 12:52:13 darwin6 avahi-daemon[833]: New relevant interface wlan0.IPv6 for mDNS.
Oct 30 12:52:13 darwin6 avahi-daemon[833]: Registering new address record for fe80::20d:f0ff:fe95:d4d on wlan0.*.
Oct 30 12:52:14 darwin6 dhclient: DHCPACK of 192.168.0.3 from 192.168.0.1
Oct 30 12:52:14 darwin6 avahi-daemon[833]: Joining mDNS multicast group on interface wlan0.IPv4 with address 192.168.0.3.
Oct 30 12:52:14 darwin6 avahi-daemon[833]: New relevant interface wlan0.IPv4 for mDNS.
Oct 30 12:52:14 darwin6 avahi-daemon[833]: Registering new address record for 192.168.0.3 on wlan0.IPv4.
Oct 30 12:52:14 darwin6 dhclient: bound to 192.168.0.3 -- renewal in 41314 seconds.
Oct 30 12:52:21 darwin6 ntpdate[1294]: adjust time server 91.189.94.4 offset -0.243167 sec
Oct 30 12:52:46 darwin6 kernel: [   68.451644] perf samples too long (2504 > 2500), lowering kernel.perf_event_max_sample_rate to 50000
Oct 30 12:53:49 darwin6 boldhumanoid[1455]: Starting boldhumanoid process

Странная вещь состоит в том, что я также синхронизировал с секундомером. От включения питания к моему запуску процесса (оживающий робот) были 35 секунд. Кажется, что что-то заставляет запись системного журнала быть отложенной еще на 100 секунд, идущих метками времени.

2
задан 30 October 2014 в 06:00

4 ответа

Я не уверен, является ли установка сервера Ubuntu действительно правильным способом пойти, из-за того, что Вы описываете, походит на задание для archlinux или similiar мне.

необходимо будет сделать большую настройку в системе, которая является, когда "берут основную систему и добавляют, что что-либо должно было" приблизиться, легче, чем "использование законченная установка, и удалите что-либо ненужное (например, по левую сторону судна, apparmor, dhcp...)" один.

, Но так или иначе, на самом деле СУЩЕСТВУЕТ запись Wiki все о сокращении времени начальной загрузки. Команды не могут перевести 1to1 для Вашей системы Ubuntu, но эта запись могла бы указать на Вас в правильном направлении:

https://wiki.archlinux.org/index.php/Improve_boot_performance

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

4
ответ дан 19 November 2019 в 00:44

Это - одно из тех приложений, где Вы в основном начинаете вычитать, пока Вы не повреждаете что-то и затем обратно прочь. Как, например, я не думаю, что Ваш робот, вероятно, использует zeroconf, который является avahi демоном, так удалите его. Вам действительно нужны сети? Или лучше, начальная загрузка в однопользовательский режим (добавляют 1 к ядру cmdline) и затем видят, сколько сервисов необходимо включить, прежде чем приложение начинает работать.

2
ответ дан 19 November 2019 в 00:44

В каком подразделении размера Вы? Я понимаю, что это не может быть ответом, который Вы ищете здесь, но для чего-то строго ограниченного во времени как выдерживание в течение 10 секунд, я пошел бы со встроенной платформой.

, Если у Вас есть пространство / бюджет питания, необходимо рассмотреть засовывать что-то как arduino на роботе, и программирующий некоторый разомкнутый цикл стоячие поведения. Можно все еще использовать человечность на системной плате. Я предложил бы что-то вроде этого:

  • Имеют arduino (или подобный), который получает регулярный сигнал подтверждения работоспособности от сервера человечности
  • , Если больше чем X интервалов heartbeat проходят, arduiono берет на себя управление и перезагружает сервер
  • , arduino может непосредственно управлять двигателями (или через любой моторный контроллер Вы используете), и дает стоячую команду, которая позволяет роботу "восстанавливаться" и не дисквалифицироваться, в то время как Ваша основная система загружается
    • Предварительная программа несколько стоячих поведений, возможно на основе которого пути робот стоит, и затем выберите одного из них на основе акселерометра
    • , Если Вы не находитесь в одном из подразделений на ножках, тогда просто запишите некоторый дрянной код ardiuno для создания, это быть похожим на робот делает что-то, в то время как сервер загружается
  • Однажды начальные загрузки системы, это отправит другого heartbeat, и arduino может выпустить управление

существуют ответы здесь, которые могут помочь Вам улучшиться, время начальной загрузки (выключите материал, пока Вы не повреждаете его, в основном), но даже тогда, если выпуск питания является достаточно общей проблемой, что-то вроде этого могло быть очень полезным.

2
ответ дан 19 November 2019 в 00:44

Попытайтесь уменьшить буфер хранения до 4 МБ. В записи/etc/sysctl.conf:

vm.dirty_bytes = 4 194 304 vm.dirty_background_bytes = 1048576

также, возможно, уменьшают время записи до 3 секунд

vm.dirty_expire centisecs = 300 vm.dirty_writeback_centisecs = 300

, прокомментируйте, помогло ли это или нет. Спасибо.

1
ответ дан 19 November 2019 в 00:44

Другие вопросы по тегам:

Похожие вопросы: