LINUX.ORG.RU

Libre Office: ускорение холодного запуска

 ,


0

1

Вычитал в Сети, что одним из факторов долгого времени холодного запуска Libre Office является попытка определения имени компьютера данной программой и невозможностью сделать это по невыясненным причинам.

И помочь этому вроде как должна модификация файла /etc/hosts путём замены строки

127.0.0.1 localhost
на
127.0.0.1 localhost <имя_компьютера>.(none)

Посмотрел на результат после данного редактирования и сокращения времени холодного запуска Libre Office что-то не заметил. Кто-нибудь ещё пробовал данный способ, если да, то каковы результаты?

★★★★★

Последнее исправление: Mischutka (всего исправлений: 2)

Посмотрел на результат после данного редактирования и сокращения времени холодного запуска Libre Office что-то не заметил. Кто-нибудь ещё пробовал данный способ, если да, то каковы результаты?

Так ты под strace запусти и посмотри лог запуска касательно разрешения имени хоста. Там будет понятно, влияет ли твоё изменение на скорость холодного старта или нет.

EXL ★★★★★
()
Ответ на: комментарий от EXL
execve("/usr/bin/lowriter", ["lowriter"], 0x7ffee6546bd0 /* 53 vars */) = 0
brk(NULL)                               = 0x801000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (Нет такого файла или каталога)
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (Нет такого файла или каталога)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=138743, ...}) = 0
mmap(NULL, 138743, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7cc42b1fe000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (Нет такого файла или каталога)
open("/lib/x86_64-linux-gnu/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\315\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=170776, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7cc42b1fc000
mmap(NULL, 2267936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7cc42add3000
mprotect(0x7cc42adf9000, 2093056, PROT_NONE) = 0
mmap(0x7cc42aff8000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7cc42aff8000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (Нет такого файла или каталога)
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\r\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14640, ...}) = 0
mmap(NULL, 2109680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7cc42abcf000
mprotect(0x7cc42abd2000, 2093056, PROT_NONE) = 0
mmap(0x7cc42add1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7cc42add1000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (Нет такого файла или каталога)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\4\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1689360, ...}) = 0
mmap(NULL, 3795296, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7cc42a830000
mprotect(0x7cc42a9c5000, 2097152, PROT_NONE) = 0
mmap(0x7cc42abc5000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x195000) = 0x7cc42abc5000
mmap(0x7cc42abcb000, 14688, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7cc42abcb000
close(3)                                = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7cc42b1fa000
arch_prctl(ARCH_SET_FS, 0x7cc42b1fa700) = 0
mprotect(0x7cc42abc5000, 16384, PROT_READ) = 0
mprotect(0x7cc42add1000, 4096, PROT_READ) = 0
mprotect(0x7cc42aff8000, 16384, PROT_READ) = 0
mprotect(0x700000, 12288, PROT_READ)    = 0
mprotect(0x7cc42b220000, 4096, PROT_READ) = 0
munmap(0x7cc42b1fe000, 138743)          = 0
open("/dev/tty", O_RDWR|O_NONBLOCK)     = 3
close(3)                                = 0
brk(NULL)                               = 0x801000
brk(0x802000)                           = 0x802000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=1679808, ...}) = 0
mmap(NULL, 1679808, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7cc42b05f000
close(3)                                = 0
brk(0x803000)                           = 0x803000
brk(0x804000)                           = 0x804000
getuid()                                = 1000
getgid()                                = 1000
geteuid()                               = 1000
getegid()                               = 1000
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
ioctl(-1, TIOCGPGRP, 0x7ffea4db358c)    = -1 EBADF (Неправильный дескриптор файла)
brk(0x805000)                           = 0x805000
sysinfo({uptime=418, loads=[37728, 55488, 30560], totalram=8311316480, freeram=5957185536, sharedram=191275008, bufferram=52895744, totalswap=8586784768, freeswap=8586784768, procs=383, totalhigh=0, freehigh=0, mem_unit=1}) = 0
brk(0x806000)                           = 0x806000
rt_sigaction(SIGCHLD, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGCHLD, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7cc42a863060}, 8) = 0
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, 8) = 0
rt_sigaction(SIGTSTP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGTSTP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, 8) = 0
rt_sigaction(SIGTTIN, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGTTIN, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, 8) = 0
rt_sigaction(SIGTTOU, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGTTOU, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, 8) = 0

Результат целиком не вставляется, поэтому пришлось разделить. Часть I.

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

Часть II

uname({sysname="Linux", nodename="astra", ...}) = 0
brk(0x80a000)                           = 0x80a000
brk(0x80c000)                           = 0x80c000
brk(0x80e000)                           = 0x80e000
brk(0x80f000)                           = 0x80f000
brk(0x810000)                           = 0x810000
brk(0x811000)                           = 0x811000
stat("/home/admin01", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
stat(".", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
stat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/home/admin01", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
getpid()                                = 2006
open("/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=26258, ...}) = 0
mmap(NULL, 26258, PROT_READ, MAP_SHARED, 3, 0) = 0x7cc42b219000
close(3)                                = 0
brk(0x812000)                           = 0x812000
getppid()                               = 2003
getpid()                                = 2006
brk(0x813000)                           = 0x813000
brk(0x814000)                           = 0x814000
getpgrp()                               = 2003
ioctl(2, TIOCGPGRP, [2003])             = 0
rt_sigaction(SIGCHLD, {sa_handler=0x44cfb0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7cc42a863060}, 8) = 0
getrlimit(RLIMIT_NPROC, {rlim_cur=31349, rlim_max=31349}) = 0
brk(0x815000)                           = 0x815000
brk(0x816000)                           = 0x816000
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
brk(0x817000)                           = 0x817000
open("/usr/bin/lowriter", O_RDONLY)     = 3
stat("/usr/bin/lowriter", {st_mode=S_IFREG|0755, st_size=61, ...}) = 0
ioctl(3, TCGETS, 0x7ffea4db3520)        = -1 ENOTTY (Неприменимый к данному устройству ioctl)
lseek(3, 0, SEEK_CUR)                   = 0
read(3, "#!/bin/sh\n/usr/lib/libreoffice/p"..., 80) = 61
lseek(3, 0, SEEK_SET)                   = 0
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024*1024}) = 0
fcntl(255, F_GETFD)                     = -1 EBADF (Неправильный дескриптор файла)
dup2(3, 255)                            = 255
close(3)                                = 0
fcntl(255, F_SETFD, FD_CLOEXEC)         = 0
fcntl(255, F_GETFL)                     = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(255, {st_mode=S_IFREG|0755, st_size=61, ...}) = 0
lseek(255, 0, SEEK_CUR)                 = 0
brk(0x818000)                           = 0x818000
read(255, "#!/bin/sh\n/usr/lib/libreoffice/p"..., 61) = 61
brk(0x819000)                           = 0x819000
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [], 8) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7cc42b1fa9d0) = 2007
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGINT, {sa_handler=0x449950, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7cc42a863060}, 8) = 0
wait4(-1, 
На что нужно смотреть?

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

На будущее, есть удобный сервис pastebin, для размещения длинных копипаст вроде логов или подобных выхлопов. Его использование облегчает жизнь всем, в посте достаточно будет ссылку на пасту разместить. А ещё в дистрибутивах есть облегчающие работу с pastebin утилиты, в моём например это wgetpaste, которая позволяет сразу отправить выхлоп чего либо или логфайл на сервер с возвратом ссылки, которую достаточно просто скопировать.

Jameson ★★★★★
()
Ответ на: комментарий от der5ys7em
  1. Ишь что ты вспомнил.

  2. У libreoffice свой правильный preloader был, не изобретай.

  3. ТС, если твоей бабушке очень помогает гидрохлорпармезан, ты им тоже заодно обколешься? Куда ты полез что-то ускорять без профайлера?

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от Mischutka

На что нужно смотреть?

Тебе нужно запускать strace с флажком -tt и смотреть на время отрабатывания тех или иных системных вызовов.

read(3, «#!/bin/sh\n/usr/lib/libreoffice/p»…, 80) = 61

И ещё запускать strace нужно именно на бинаре, а не скриптах, запускающих программу.

EXL ★★★★★
()

Не сталкивался, у меня за секунду запускается, правда установлен только writer.

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

papin-aziat ★★★★★
()
Ответ на: комментарий от Mischutka

Из-за собственной невнимательности я даже при правке одной строки ухитрился сделать ошибку. Правка должна быть в виде:

127.0.0.1 localhost <имя_компьютера>.(none)
в моём случае это
127.0.0.1 localhost astra.(none)

Mischutka ★★★★★
() автор топика
Ответ на: комментарий от papin-aziat

правда установлен только writer.

Libreoffice — это монолит. Writer, calc, impress и пр. — практически только ссылки, запускающие одно и тоже с разными опциями. Ну ещё и набор шаблонов.

greenman ★★★★★
()
Ответ на: комментарий от papin-aziat

Выключи джаву, если не пользуешься базами.

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

Попробуй поменять тулкит с qt на gtk или наоборот, или вообще без интеграции.

Где это найти в настройках?

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

Что-ж ты голову себе морочишь, Mischutka! Начитался в соседней теме, как по полчаса запускают систему на «процессоре в 5МГц». Выкинь из головы эту чушь. Новый год встречай! Удачи тебе!

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

Ну тогда не удивительно, что тормозит. Вполне возможно, что он просто так плохо написан, а исправить можно только рам диском.

damix9 ★★★
()
Последнее исправление: damix9 (всего исправлений: 1)

Мне всегда казалось что оно долго стартует из за встроенной джава-машины и сложного однопоточного ядра, унаследованного ещё о Sun Microsystem (если такую кто то ещё помнит). Короче полная нагрузка на 1 ядро цпу с небольшими просадками на считывание с диска, никаких ожиданий имени и прочего.

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

Libreoffice — это монолит. Writer, calc, impress и пр. — практически только ссылки, запускающие одно и тоже с разными опциями.

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

Интересно, у майкрософта так же? Но вроде бы word.exe и excel.exe — файлы довольно приличного объёма.

hobbit ★★★★★
()