October 10, 2010 01:56AM
On Sun, Oct 10, 2010 at 12:45:15PM +0800, Alexander Petrovsky wrote:

> >
> > Что касается размещения кэша в md/tmpfs - это имеет смысл, только если
> > в кэш делается много записей (а не чтений). В противном случае это
> > просто разбазаривание памяти.
>
>
> Игорь, объясните пожалуйста, почему при преобладании чтения из tmpfs это
> разбазаривание памяти? Правильно ли я понимаю, что после первого обращения к
> файлу хранящегося на диске, он так же кэшируется в память средствами FreeBSD
> и попадает в active bucket? Выходит что tmpfs дает профит, только при первом
> обращении к файлу, при дальнейших обращениях к файлу, скорость его получения
> примерно одинакова, правильно ли я понимаю?

Самым оптимальным методом с точки зрения расхода памяти является sendfile:
после того, как страницы файла прочитаны в vnode cache, их единственная
копия используется для отдачи всем клентам. Чтение без использования
sendfile'а - read(), aio_read() - как правило, читает файл в vnode cache
(есть исключения), копирует данные в пространство процесса, потом этот
процесс копирует данные в mbufs/clusters в ядро для передачи клиенту.
Например, есть популярный 12K файл (три 4К страницы), его запрашивают
одновременно 1000 клиентов. В какой момент времени будет какое-то количство
копий этого файла в памяти пользовательского процесса, какое-то количество
в буферах TCP/IP стэка (mbufs/clusters), какое-то и там, и там. То есть,
вместо единственной копии 12К, мы имеем минимум 12К * 1000, 12M.

Текущее состояние tmpfs/md во FreeBSD:

tmpfs:

*) read()/aio_read() читает сразу из tmpfs без копирования в vnode cache.
*) sendfile копирует битые данные в vnode cache:
http://www.freebsd.org/cgi/query-pr.cgi?pr=127213
исправлено в 8.1-STABLE в конце сентября
*) данные, скопированные sendfile'ом в vnode cache, не кэшировались там:
http://www.freebsd.org/cgi/query-pr.cgi?pr=141305
исправлено в 8.1-STABLE в конце сентября

md:

read()/aio_rea()/sendfile() копируют данные в vnode cache, удваивая
объём памяти для активно используемых данных.


--
Игорь Сысоев
http://sysoev.ru

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

TMPFS and nginx

Elifan October 08, 2010 02:00AM

Re: TMPFS and nginx

Alexander Petrovsky October 08, 2010 02:32AM

Re: TMPFS and nginx

Igor Sysoev October 08, 2010 04:04AM

Re: TMPFS and nginx

Elifan October 08, 2010 05:04AM

Re: TMPFS and nginx

Igor Sysoev October 08, 2010 07:54AM

Re: TMPFS and nginx

Alexander Petrovsky October 10, 2010 12:46AM

Re: TMPFS and nginx

Igor Sysoev October 10, 2010 01:56AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 122
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready