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

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

On Tue, Oct 28, 2008 at 12:31:35PM +0600, Mikhail Gusarov wrote:
>  AT> Trie лишь оптимизирует *доступ* к contents_index (переходы типа
>  AT> многоуровнего хеша); а с точки зрения размера выгоднее
>  AT> contents_index просто сжать.
> 
> Конечно, но trie заодно уберёт огромную избыточность текущего
> contents_index. Впрочем, сжать проще.

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

>  AT> Значит, нужна нетривиальная логика сериализации trie, которая бы
>  AT> оптимизировала локальность ссылок при переходе вглубь trie на
>  AT> физических страницах.
> 
> Любая сериализация trie будет лучше, чем grep по файлу :)

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

Если на одной странице оказываются unrelated пути (напр. /usr и /etc),
то мы лишь избавляемся от лишних вызовов типа regexec(3) (как в grep),
но не можем ограничить активность ОС (ограничить фактическое потребление
памяти).  А в примитивной сериализации адреса никак не сгруппированы и
не упорядочены, то есть будет почти случайное перемешивание; так что в
памяти будет оседать большое количество лишних страниц.  То есть при
наивной сериализации попытка сколько-нибудь глубокого доступ будет
"всасывать" весь contents_index в память, а оптимизация доступа будет
идти уже на "всосанных" данных.  Тогда понятие оптимальности
раздваивается: с точки зрения userspace вместо линейного перебора
будет trie; а с точки зрения virtual memory и свопа получается
то же самое, то есть очень дорого.

[*] http://en.wikipedia.org/wiki/Page_fault

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

  reply	other threads:[~2008-10-28  7:04 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 [this message]
2008-10-28  7:19                       ` Mikhail Gusarov
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=20081028070413.GB8739@altlinux.org \
    --to=at@altlinux.ru \
    --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