ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Mikhail Gusarov <dottedmag@altlinux.org>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] contents_index trie
Date: Tue, 28 Oct 2008 13:19:20 +0600
Message-ID: <87iqrdmbk7.fsf@frontier.dottedmag.net> (raw)
In-Reply-To: <20081028070413.GB8739@altlinux.org> (Alexey Tourbin's message of "Tue, 28 Oct 2008 10:04:13 +0300")

[-- Attachment #1: Type: text/plain, Size: 2281 bytes --]

Twas brillig at 10:04:13 28.10.2008 UTC+03 when at@altlinux.ru did gyre and gimble:

 AT> С точки зрения доступа сериализации должна давать минимальное
 AT> количество page faults [*].  То есть, примерно, чтобы переход / ->
 AT> /usr затрагивал всего одну 4K страницу (которую необходимо
 AT> загрузить в память с диска), переход /usr -> /usr/share затрагивал
 AT> всего одну 4K страницу и т.д.

 AT> Если на одной странице оказываются unrelated пути (напр. /usr и
 AT> /etc), то мы лишь избавляемся от лишних вызовов типа regexec(3)
 AT> (как в grep), но не можем ограничить активность ОС (ограничить
 AT> фактическое потребление памяти).

Не понимаю, почему так. Возьмём путь длиной в 40 символов (для простоты
- 40 байтов). Для того, чтобы добраться до его конца, нам нужно
прочитать 40 узлов. Каждый узел - это, максимум, 256 x (байт, указатель
на заголовок следующего блока, бит статуса), т.е. укладывается в 4k с
запасом. Бит статуса можно изжить с помощью заголовка "имена начинаются
со смещения 0xabcde".

Таким образом, для lookup'а придётся поднять 41 блок (последний - для
вычитываяния имени пакета) даже при тривиальной сериализации, которая
просто не даёт узлу пересечь границу блока.

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

-- 

[-- Attachment #2: Type: application/pgp-signature, Size: 196 bytes --]

  reply	other threads:[~2008-10-28  7:19 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-26 10:16 [devel] kill Sisyphus noarch? Igor Vlasenko
2008-10-26 10:20 ` Mikhail Gusarov
2008-10-26 12:02   ` Alexey Tourbin
2008-10-26 12:04     ` Mikhail Gusarov
2008-10-26 12:14       ` Alexey Tourbin
2008-10-26 13:22       ` Sergey Bolshakov
2008-10-26 13:24         ` Mikhail Gusarov
2008-10-26 12:27   ` Alexey Tourbin
2008-10-26 12:29     ` Mikhail Gusarov
2008-10-26 12:41       ` Alexey Tourbin
2008-10-26 12:46         ` Mikhail Gusarov
2008-10-26 12:52           ` Alexey Tourbin
2008-10-26 12:58             ` Mikhail Gusarov
2008-10-26 18:15             ` Igor Vlasenko
2008-10-26 18:18               ` Mikhail Gusarov
2008-10-26 18:43                 ` Igor Vlasenko
2008-10-28  6:27                 ` [devel] contents_index trie Alexey Tourbin
2008-10-28  6:31                   ` Mikhail Gusarov
2008-10-28  7:04                     ` Alexey Tourbin
2008-10-28  7:19                       ` Mikhail Gusarov [this message]
2008-10-28  7:50                         ` Alexey Tourbin
2008-10-28  7:51                           ` Alexey Tourbin
2008-10-28  8:09                           ` Mikhail Gusarov
2008-11-01 15:42                           ` Денис Смирнов
2008-11-01 18:01                             ` Alexey Tourbin
2008-11-01 18:07                               ` Alexey Tourbin
2008-11-01 20:45                                 ` Alexey Tourbin
2008-11-01 21:19                                   ` Alexey Tourbin
2008-10-26 18:41               ` [devel] kill Sisyphus noarch? Alexey Tourbin
2008-10-26 18:30             ` Pavlov Konstantin
2008-10-26 18:44               ` Mikhail Gusarov
2008-10-26 19:16                 ` Andrey Rahmatullin
2008-10-26 18:08           ` [devel] noarch/base Dmitry V. Levin
2008-10-26 14:30         ` [devel] kill Sisyphus noarch? Anton Farygin
2008-10-26 14:42       ` Kirill A. Shutemov
2008-10-26 14:56         ` Mikhail Gusarov
2008-10-26 17:27           ` Kirill A. Shutemov
2008-10-26 17:28             ` Mikhail Gusarov
2008-10-26 17:34               ` Kirill A. Shutemov
2008-10-26 17:34                 ` Led
2008-10-26 17:35                   ` Mikhail Gusarov
2008-10-26 17:38                     ` Kirill A. Shutemov
2008-10-26 17:38                       ` Mikhail Gusarov
2008-10-26 19:14                         ` Kirill A. Shutemov
2008-10-26 19:14                           ` Mikhail Gusarov
2008-10-26 18:26                       ` Pavlov Konstantin
2008-10-26 17:42                     ` Led
2008-10-26 17:45                       ` Mikhail Gusarov
2008-10-26 13:20   ` Sergey Bolshakov
2008-10-26 13:26     ` Mikhail Gusarov
2008-10-26 14:33     ` Anton Farygin
2008-10-26 10:26 ` Igor Vlasenko
2008-10-26 12:08   ` Alexey Tourbin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87iqrdmbk7.fsf@frontier.dottedmag.net \
    --to=dottedmag@altlinux.org \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git