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 --]
next prev parent 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