Ubuntu 20.04 лагает при использовании расширений, использующих команду GLib spawn с pgrep - proUbuntu
3 голосов
/ 05 мая

Когда я был на 19.10 с GNOME 3.34, я мог вызывать команду с GLib столько раз, не вызывая задержек в оболочке GNOME или r любом приложении. Но в версии 20.04 с GNOME 3.36.1 даже простая команда spawn может создавать некоторые задержки для r всей оболочки GNOME и даже приложений.

Чтобы показать вам, как я это делаю, я создал эту простую оболочку GNOME extension:

const Mainloop = imports.mainloop;
const GLib = imports.gi.GLib;

let timeout;

function init(){
}

function enable(){
    timeout = Mainloop.timeout_add_seconds(1.0,() => {
      var [ok, out, err, exit] = GLib.spawn_command_line_sync('pgrep Discord');
      log('Discord is running');
      return true;
    });
}

function disable(){
    Mainloop.source_remove(timeout);
}

Почему происходит такое отставание? как я могу исправить проблему с задержкой в ​​этом коде?

1 Ответ

1 голос
/ 16 мая

pgrep в Ubuntu 20,04 работает очень медленно. Время выполнения - linea r to you r stack limit (ulimit -S -s to check), оно может легко достигать 30 se c даже на быстрых машинах. Если у вас нет ограничения стека, любой вызов pgrep завершится ошибкой:

cannot allocate 4611686018427387903 bytes

Отчеты об ошибках открыты для r Ubuntu (Debian, Arch linux), но трафик не отображается c. Обратите внимание на r отметку, что вы тоже затронуты: https://bugs.launchpad.net/ubuntu/+source/procps/+bug/1874824

Ошибка исправлена ​​в procps, но дистрибутивы не улавливают ее ...

...