<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Wielowątkowość w przeglądarce</title>
	<atom:link href="http://diary.braniecki.net/2009/06/23/wielowatkowosc-w-przegladarce/feed/" rel="self" type="application/rss+xml" />
	<link>http://diary.braniecki.net/2009/06/23/wielowatkowosc-w-przegladarce/</link>
	<description>Open-source development violates almost all known management theories.</description>
	<lastBuildDate>Mon, 08 Mar 2010 00:32:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: tomek</title>
		<link>http://diary.braniecki.net/2009/06/23/wielowatkowosc-w-przegladarce/comment-page-1/#comment-42955</link>
		<dc:creator>tomek</dc:creator>
		<pubDate>Sat, 15 Aug 2009 17:40:07 +0000</pubDate>
		<guid isPermaLink="false">http://diary.braniecki.net/?p=953#comment-42955</guid>
		<description>Popełnił pan błąd w swoich obliczeniach. Chrome wykorzystuje znaczne ilości pamięci dzielonej. Przykładowo nie ma sensu ładować grafiki 2 lub 3 razy gdy jest ona statyczna. Poszczególne procesy mają więc wskaźnik na to samo miejsce w pamięci. Podobnie jest ze wszystkimi zasobami które są traktowane jako niezmienne. 

Jedyne dane które mógłby być dublowane pomiędzy procesami to dane w tzw. sesji. I tutaj jednak nie jest tak jak można byłoby się obawiać. Chrome nie uruchamia każdej zakładki jako osobny proces. Uruchamia każdą witrynę jako osobny proces. Dzięki temu Chrome zapobiega wykradaniu np. haseł przez skrypty wykonujące się w osobnych zakładkach. W ramach jednej sesji dowolna ilość zakładek z tego samego serwisu działa w pojedynczym procesie, dane nie są więc dublowane.

Jak więc zliczyć pamięć? Najlepiej sprawdzić bezpośrednio w Chrome, jest tam zakładka obsługi procesów. Alternatywą jest sprawdzenie w systemie wolnej pamięci: przed uruchomieniem testu, w trakcie i po nim. Sprawdzenie pamięci wolnej nie wykorzystywanej przez procesy gwarantuje że system pokaże realnie o ile ilość wolnej pamięci się zmniejszyła. Przed takim testem najlepiej zablokować wszystkie niekrytyczne usługi i aplikacje.</description>
		<content:encoded><![CDATA[<p>Popełnił pan błąd w swoich obliczeniach. Chrome wykorzystuje znaczne ilości pamięci dzielonej. Przykładowo nie ma sensu ładować grafiki 2 lub 3 razy gdy jest ona statyczna. Poszczególne procesy mają więc wskaźnik na to samo miejsce w pamięci. Podobnie jest ze wszystkimi zasobami które są traktowane jako niezmienne. </p>
<p>Jedyne dane które mógłby być dublowane pomiędzy procesami to dane w tzw. sesji. I tutaj jednak nie jest tak jak można byłoby się obawiać. Chrome nie uruchamia każdej zakładki jako osobny proces. Uruchamia każdą witrynę jako osobny proces. Dzięki temu Chrome zapobiega wykradaniu np. haseł przez skrypty wykonujące się w osobnych zakładkach. W ramach jednej sesji dowolna ilość zakładek z tego samego serwisu działa w pojedynczym procesie, dane nie są więc dublowane.</p>
<p>Jak więc zliczyć pamięć? Najlepiej sprawdzić bezpośrednio w Chrome, jest tam zakładka obsługi procesów. Alternatywą jest sprawdzenie w systemie wolnej pamięci: przed uruchomieniem testu, w trakcie i po nim. Sprawdzenie pamięci wolnej nie wykorzystywanej przez procesy gwarantuje że system pokaże realnie o ile ilość wolnej pamięci się zmniejszyła. Przed takim testem najlepiej zablokować wszystkie niekrytyczne usługi i aplikacje.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: zbraniecki</title>
		<link>http://diary.braniecki.net/2009/06/23/wielowatkowosc-w-przegladarce/comment-page-1/#comment-40868</link>
		<dc:creator>zbraniecki</dc:creator>
		<pubDate>Wed, 24 Jun 2009 17:44:22 +0000</pubDate>
		<guid isPermaLink="false">http://diary.braniecki.net/?p=953#comment-40868</guid>
		<description>Masz z pewnością racje, że wyniki Chrome są zawyżane, sami autorzy Chrome potwierdzają, że Chrome zużywa więcej pamięci od Firefoksa zarówno w trybie izolacji procesów jak i w trybie jednego procesu (da się uruchomić tak Chrome).

Natomiast niewątpliwie Chrome w trybie wieloprocesowym zużywa zauważalnie więcej ramu niż w trybie jednoprocesowym i tylko tego chciałem dowieść - że wieloprocesowość ma koszty (o tym też piszą autorzy Chrome w podlinkowanym artykule).</description>
		<content:encoded><![CDATA[<p>Masz z pewnością racje, że wyniki Chrome są zawyżane, sami autorzy Chrome potwierdzają, że Chrome zużywa więcej pamięci od Firefoksa zarówno w trybie izolacji procesów jak i w trybie jednego procesu (da się uruchomić tak Chrome).</p>
<p>Natomiast niewątpliwie Chrome w trybie wieloprocesowym zużywa zauważalnie więcej ramu niż w trybie jednoprocesowym i tylko tego chciałem dowieść &#8211; że wieloprocesowość ma koszty (o tym też piszą autorzy Chrome w podlinkowanym artykule).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Maciej Piechotka</title>
		<link>http://diary.braniecki.net/2009/06/23/wielowatkowosc-w-przegladarce/comment-page-1/#comment-40790</link>
		<dc:creator>Maciej Piechotka</dc:creator>
		<pubDate>Tue, 23 Jun 2009 19:35:24 +0000</pubDate>
		<guid isPermaLink="false">http://diary.braniecki.net/?p=953#comment-40790</guid>
		<description>Zapomniałem dodać -nie mówię że Chrome nie jest pamięciożerna ale taki test całkowicie ignoruje jakiekolwiek zarządzanie pamięcią przez system. Chrome ma systematycznie zawyżane zużycie pamięci i nie do końca jest wiadome o ile - ale można przewidywać że nie jest to mała liczba. 

Dodatkowo współdzielenie pamięci nie musi oznaczać brak izolacji dzięki kopii-podczas-zapisu (copy-on-write). Np. wywołanie fork jest stosunkowo tanie gdyż domyślnie cała pamięć nie jest kopiowana - kopiowanie następuje dopiero gdy proces spróbuje po niej pisać (otrzymuje wtedy kopię strony tylko dla siebie). Jest to technika stosowana &#039;od niepamiętnych czasów&#039;. Zresztą ponieważ fork jest tanie to podprocesy tworzy się na *nixach poprzez fork+execv - ponieważ nic nie jest kopiowane oprócz małego fragmentu stosu.

Oczywiście DOM nie jest wspódzielony - ale i na Fx nie jest bo każda strona ma inny. Pliki w pamięci nawet gdyby nie były wspódzielone to nie grają roli. Nie widzę żadnej ciężkiej rzeczy która mogłaby być tak do końca współdzielona - oprócz możeJIT-owego kodu z JavaScriptu. Reszta albo i tak powinna być RO albo i tak nie może  być współdzielona. Ten konkretny paragraf jest pisany z pełną nieodpowiedzialnością gdyż lepiej znam się na pamięci wirtualnej niż na przeglądarkach.</description>
		<content:encoded><![CDATA[<p>Zapomniałem dodać -nie mówię że Chrome nie jest pamięciożerna ale taki test całkowicie ignoruje jakiekolwiek zarządzanie pamięcią przez system. Chrome ma systematycznie zawyżane zużycie pamięci i nie do końca jest wiadome o ile &#8211; ale można przewidywać że nie jest to mała liczba. </p>
<p>Dodatkowo współdzielenie pamięci nie musi oznaczać brak izolacji dzięki kopii-podczas-zapisu (copy-on-write). Np. wywołanie fork jest stosunkowo tanie gdyż domyślnie cała pamięć nie jest kopiowana &#8211; kopiowanie następuje dopiero gdy proces spróbuje po niej pisać (otrzymuje wtedy kopię strony tylko dla siebie). Jest to technika stosowana &#8216;od niepamiętnych czasów&#8217;. Zresztą ponieważ fork jest tanie to podprocesy tworzy się na *nixach poprzez fork+execv &#8211; ponieważ nic nie jest kopiowane oprócz małego fragmentu stosu.</p>
<p>Oczywiście DOM nie jest wspódzielony &#8211; ale i na Fx nie jest bo każda strona ma inny. Pliki w pamięci nawet gdyby nie były wspódzielone to nie grają roli. Nie widzę żadnej ciężkiej rzeczy która mogłaby być tak do końca współdzielona &#8211; oprócz możeJIT-owego kodu z JavaScriptu. Reszta albo i tak powinna być RO albo i tak nie może  być współdzielona. Ten konkretny paragraf jest pisany z pełną nieodpowiedzialnością gdyż lepiej znam się na pamięci wirtualnej niż na przeglądarkach.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Maciej Piechotka</title>
		<link>http://diary.braniecki.net/2009/06/23/wielowatkowosc-w-przegladarce/comment-page-1/#comment-40788</link>
		<dc:creator>Maciej Piechotka</dc:creator>
		<pubDate>Tue, 23 Jun 2009 19:22:41 +0000</pubDate>
		<guid isPermaLink="false">http://diary.braniecki.net/?p=953#comment-40788</guid>
		<description>&quot;musi ona praktycznie załadować do pamięci całą przeglądarkę&quot; - nie zaprzeczam że strona musi być izolowana - ale mówienie o ładowaniu całej przeglądarki to spora przesada. U mnie różnica między pamięcią przypisaną do procesu i pamięcią współdzieloną bywa 100 MiB na process. Ponieważ mam ok. 100 procesów to wypada że zajęcie pamięci przez to jest jakieś 10000 MiB - czyli jakieś 9.77 GiB. Skądinąd wiem że pomijając cache i bufory zajęte mam 674 MiB pamięci - łącznie z tą przypisaną do procesów. Przesadzam sporo ale zsumowanie 10 najbardziej vmem-ożernych procesów daje więcej niż mam pamięci. Kłopot w tym że swap nie jest zajęty. Więc taka oszczędność ma spory wpływ - a przecież 10 najbardziej vmem-ożernych u mnie procesów nie mają dużo wspólnych danych użytkownika.
(UPDATE: Zliczyłem vmem i wyszło ok. 4.66 GiB. Skoninąd wiem że mam 2 GiB RAMu i nic na swapie nie siedzi)

Ale nie ma prostej możliwości wyizolowania pamięci współdzielonej. Więc metodą byłoby patrzenie na zajęcie pamięci fizycznej przez komputer. Dla uniknięcia błędów trzeba by wyłączyć wszystkie usługi itp. Miałoby to chyba tą jeszcze zaletę że pokazywałoby pamięć zajmowaną przez inne usługi zktórymi przeglądarka komunikuje się przez COM czy podobne technologie (możliwe że także pamięć jądra).</description>
		<content:encoded><![CDATA[<p>&#8220;musi ona praktycznie załadować do pamięci całą przeglądarkę&#8221; &#8211; nie zaprzeczam że strona musi być izolowana &#8211; ale mówienie o ładowaniu całej przeglądarki to spora przesada. U mnie różnica między pamięcią przypisaną do procesu i pamięcią współdzieloną bywa 100 MiB na process. Ponieważ mam ok. 100 procesów to wypada że zajęcie pamięci przez to jest jakieś 10000 MiB &#8211; czyli jakieś 9.77 GiB. Skądinąd wiem że pomijając cache i bufory zajęte mam 674 MiB pamięci &#8211; łącznie z tą przypisaną do procesów. Przesadzam sporo ale zsumowanie 10 najbardziej vmem-ożernych procesów daje więcej niż mam pamięci. Kłopot w tym że swap nie jest zajęty. Więc taka oszczędność ma spory wpływ &#8211; a przecież 10 najbardziej vmem-ożernych u mnie procesów nie mają dużo wspólnych danych użytkownika.<br />
(UPDATE: Zliczyłem vmem i wyszło ok. 4.66 GiB. Skoninąd wiem że mam 2 GiB RAMu i nic na swapie nie siedzi)</p>
<p>Ale nie ma prostej możliwości wyizolowania pamięci współdzielonej. Więc metodą byłoby patrzenie na zajęcie pamięci fizycznej przez komputer. Dla uniknięcia błędów trzeba by wyłączyć wszystkie usługi itp. Miałoby to chyba tą jeszcze zaletę że pokazywałoby pamięć zajmowaną przez inne usługi zktórymi przeglądarka komunikuje się przez COM czy podobne technologie (możliwe że także pamięć jądra).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: zbraniecki</title>
		<link>http://diary.braniecki.net/2009/06/23/wielowatkowosc-w-przegladarce/comment-page-1/#comment-40783</link>
		<dc:creator>zbraniecki</dc:creator>
		<pubDate>Tue, 23 Jun 2009 18:11:43 +0000</pubDate>
		<guid isPermaLink="false">http://diary.braniecki.net/?p=953#comment-40783</guid>
		<description>Maciej: problem jest taki, że w pamięci współdzielonej mogą być tylko dane, które nie są izolowane. A Chrome izoluje całe strony.</description>
		<content:encoded><![CDATA[<p>Maciej: problem jest taki, że w pamięci współdzielonej mogą być tylko dane, które nie są izolowane. A Chrome izoluje całe strony.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Maciej Piechotka</title>
		<link>http://diary.braniecki.net/2009/06/23/wielowatkowosc-w-przegladarce/comment-page-1/#comment-40753</link>
		<dc:creator>Maciej Piechotka</dc:creator>
		<pubDate>Tue, 23 Jun 2009 12:16:36 +0000</pubDate>
		<guid isPermaLink="false">http://diary.braniecki.net/?p=953#comment-40753</guid>
		<description>&quot;Tymczasem w przypadku modelu w którym każda strona (czy karta) ma swój proces, musi ona praktycznie załadować do pamięci całą przeglądarkę – a przynajmniej cały kod potrzebny do obługi jednej strony. To kosztuje i to wcale nie mało.&quot;

Nie znam zarządzania pamięcią w Windowsie ale na 99% kod i inne dane statyczne będą w pamięci współdzielonej więc mimo że program zlicza je za każdym razem to w rzeczywistości to jeden obszar pamięci.</description>
		<content:encoded><![CDATA[<p>&#8220;Tymczasem w przypadku modelu w którym każda strona (czy karta) ma swój proces, musi ona praktycznie załadować do pamięci całą przeglądarkę – a przynajmniej cały kod potrzebny do obługi jednej strony. To kosztuje i to wcale nie mało.&#8221;</p>
<p>Nie znam zarządzania pamięcią w Windowsie ale na 99% kod i inne dane statyczne będą w pamięci współdzielonej więc mimo że program zlicza je za każdym razem to w rzeczywistości to jeden obszar pamięci.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
