<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:gassa</id>
  <title>Ivan Kazmenko</title>
  <subtitle>Ivan Kazmenko</subtitle>
  <author>
    <email>gassa@mail.ru</email>
    <name>Ivan Kazmenko</name>
  </author>
  <link rel="alternate" type="text/html" href="http://gassa.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://gassa.livejournal.com/data/atom"/>
  <updated>2006-11-08T02:26:43Z</updated>
  <lj:journal userid="10231973" username="gassa" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://gassa.livejournal.com/data/atom" title="Ivan Kazmenko"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:gassa:258</id>
    <link rel="alternate" type="text/html" href="http://gassa.livejournal.com/258.html"/>
    <link rel="self" type="text/xml" href="http://gassa.livejournal.com/data/atom/?itemid=258"/>
    <title>gassa @ 2006-11-08T05:26:00</title>
    <published>2006-11-08T02:26:43Z</published>
    <updated>2006-11-08T02:26:43Z</updated>
    <category term="low-level"/>
    <lj:music>none</lj:music>
    <content type="html">В своём первом посте расскажу про тестирование времени обращения к памяти.&lt;br /&gt;&lt;br /&gt;Почитав Криса Касперски про оптимизацию работы с памятью, решил проверить, насколько тесты производительности пятилетней давности применимы сегодня. Первым тестом стала программа, которая читает одинаковое количество 32-битных int-ов из памяти с разным шагом. Цель - выяснить, как время чтения этих int-ов зависит от шага.&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;div class="ljcut" text="Read more..."&gt;Конкретнее, читаем 2048 int-ов с шагом step, кратным 512 и изменяющимся от 512 до 65536. Взяты большие степени двойки, чтобы минимизировать влияние на тест того, что, кроме основной памяти, вообще-то есть кэш.&lt;br /&gt;&lt;br /&gt;Под линуксом, как на моём Athlon64, так и на универовском Pentium 4, всё довольно объяснимо - начиная с некоторого момента, когда кончается влияние кэша,  2048 int-ов читаются всё равно откуда с почти одинаковой скоростью:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pics.livejournal.com/gassa/pic/00004gdf/"&gt;&lt;img width="320" height="200" border="0" alt="" src="http://pics.livejournal.com/gassa/pic/00004gdf" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Для Pentium 4, правда, заметна периодическая "рябь", видимо, из-за обращения к новой странице памяти - если тестировать шаги не подряд, а в случайном порядке, рябь исчезает.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pics.livejournal.com/gassa/pic/000052bc/"&gt;&lt;img width="320" height="200" border="0" alt="" src="http://pics.livejournal.com/gassa/pic/000052bc" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;А вот под Windows XP / 2003 на Athlon64 ситуация кардинально меняется:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pics.livejournal.com/gassa/pic/00006f3a/"&gt;&lt;img width="320" height="200" border="0" alt="" src="http://pics.livejournal.com/gassa/pic/00006f3a" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Если попереставлять тесты или тестировать каждый шаг несколько раз, запускать один процесс на всё или новый процесс на каждый тест, обнаруживается следующая закономерность: в первую секунду после запуска тестирования всё нормально, а затем время на тест увеличивается примерно в три раза. Причём для тестов, не так активно работающих с памятью (например, цикл из nop-ов), таких эффектов не наблюдается.&lt;br /&gt;&lt;br /&gt;Может быть, память, которая возвращена операционной системе, может быть повторно использована не сразу, а только через некоторое время? Но это ещё не всё. Видите ямку на графике и пик перед ней? Очень похоже на то, что менеджер памяти (пик) "догадался", что можно выдавать заново только что использованную память и не тратить время на доступ к ещё не открытым страницам. На некоторое время (ямка) открытых страниц хватило, а затем они опять кончились... Но если бы время тратилось на открытие новых страниц, оно бы росло с ростом шага... Короче, загадка - комментарии по ней приветствуются :) .&lt;/div&gt;</content>
  </entry>
</feed>
