LINUX.ORG.RU

Долгий запуск mpd

 


0

1

Привет, лор. 3 час не могу понять почему на свежеустаноленном арче mpd запускается больше 10 секунд

$ systemd-analyze blame
10.325s mpd.service
4.945s dev-sda7.device
2.449s systemd-rfkill.service
2.041s systemd-modules-load.service
1.713s systemd-journald.service
1.492s wpa_supplicant.service
1.368s systemd-fsck@dev-sda6.service
948ms connman-vpn.service
938ms systemd-tmpfiles-setup-dev.service
906ms dev-sda5.swap
.....
При этом ни 1 ошибки нет
$ journalctl -b -u mpd
-- Logs begin ... --
мар 31 17:55:20 acerTM systemd[1]: Starting Music Player Daemon...
мар 31 17:55:31 acerTM systemd[1]: Started Music Player Daemon.

Ну и сюда же наверное дам mpd.conf >> https://pastebin.com/zB0kEbjR


10.325s mpd.service

А должен за какое время стартануть?
Вывод cat /lib/systemd/system/mpd.service покажи.

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

А должен за какое время стартануть?

Раз в 10 быстрее

Вывод cat /lib/systemd/system/mpd.service покажи.

Дефолт вообще.

$ cat /lib/systemd/system/mpd.service
[Unit]
Description=Music Player Daemon
Documentation=man:mpd(1) man:mpd.conf(5)
After=network.target sound.target

[Service]
User=mpd
Type=notify                                                                                                                                                               
ExecStart=/usr/bin/mpd --no-daemon                                                                                                                                        
                                                                                                                                                                          
# allow MPD to use real-time priority 50                                                                                                                                  
LimitRTPRIO=50
LimitRTTIME=infinity

# disallow writing to /usr, /bin, /sbin, ...
ProtectSystem=yes

# more paranoid security settings
NoNewPrivileges=yes
ProtectKernelTunables=yes
ProtectControlGroups=yes
ProtectKernelModules=yes
# AF_NETLINK is required by libsmbclient, or it will exit() .. *sigh*
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX AF_NETLINK
RestrictNamespaces=yes

[Install]
WantedBy=default.target
Also=mpd.socket

macroc
() автор топика

Дай угадаю, у тебя музыка и база данных находится на другом харде, который монтируется или через systemd.automount, или руками?

Базу данных mpd рекомендую хранить в корне (/var/lib/mpd, например), а mpd.service переписать так, чтобы он зависел от партишна с музыкой и ждал его. Таким образом юнит не будет ждать у моря погоды.

Ну и, если у тебя коллекция жирная, то особо ничего не поделаешь, он будет много жрать и долго запускаться.

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

Дай угадаю

Не угадал, все на 1 харде, по разным разделам

Базу данных mpd рекомендую хранить в корне (/var/lib/mpd)

Всё так и есть.

Ну и, если у тебя коллекция жирная

1gb rammshtein (пока настрою конечно же).

mpd.service переписать так, чтобы он зависел от партишна с музыкой и ждал его

Не осилю. То есть без костылей никак?

macroc
() автор топика

Переместите его в конец очереди на запуск, тогда пофиг будет, сколько времени он там стартует.

Deleted
()

mpd как бы намекает, что он не нужен на десктопе.

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

Список mount-юнитов можно узнать через

systemctl list-units --type=mount
В mpd-юните в поле After через пробел добавляешь необходимые mount-юниты. Ну и network-online.target туда же, если есть в системе.
В ExecStart попробуй для mpd конфиг явно указать.

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

Не угадал, все на 1 харде, по разным разделам

Те же яйца, только в профиль. Хотя, по сути, если это HDD, то всё упирается в головку — юниты стартуют параллельно, а прочитать данные из двух концов одного харда одновременно у них всё равно не выйдет.

1gb rammshtein (пока настрою конечно же).

Это мелочь, хотя, база может быть сильно фрагментирована.

То есть без костылей никак?

Дело не в костылях, а в том, что у тебя куча процессов пытаются одновременно прочитать данные из кучи разных мест на одном диске одной башкой харда. Тут или переезжать на пару SSD, или раскидываться по хардам и всё детально тюнить. В любом случае, приложить усилия придётся.

graphical.target @2.696s
└─multi-user.target @2.696s
  └─mpd.service @1.229s +1.466s
    └─network.target @1.229s
      └─dhcpcd.service @1.150s +79ms
        └─basic.target @1.136s
          └─sockets.target @1.136s
            └─dbus.socket @1.136s
              └─sysinit.target @1.136s
                └─systemd-update-utmp.service @1.134s +2ms
                  └─systemd-tmpfiles-setup.service @1.129s +4ms
                    └─local-fs.target @1.128s
                      └─home.mount @397ms +731ms
                        └─dev-disk-by\x2duuid-a66bcc3b\x2d25d6\x2d4477\x2d9e05\x2d4cfef79324ee.device @396ms
r3lgar ★★★★★
()
Ответ на: комментарий от Deleted

Да по сути он вообще ни на что не влияет — он зависит только от mount-юнита диска, на котором базы данных, от него не зависит ничего. Так что по факту он портит только цЫферки.

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