О блоге

Все новые материалы размещаются на Блогосайте alv.me. Старые - в процессе переноса.

17.08.2008

Моя первая без-win'ная машина. 2000

2000 г

Но продавши ту тачку, чтоб не все было забыто,
Мы оставим себе материнку от Abit'а.
Чтобы вспомнив её, ты с улыбкой мог сказать:
Эх, Abit твою, машина, мать!
Вроде как народное

Это рассказ о первой моей машине, не знавшей Windows с самого момента ее сборки. Жива она и по сию пору - побывав некоторое время домашней машиной моего завлаба, превратностью судьбы обратилась она на некоторое время в тачку для моих детей. На которой они впервые авторизовались как пользователи FreeBSD, и набрали свои первые символы в текстовом редакторе joe. А ныне прочно окопалась у меня на службе...

К тому моменту, с которого начинается повествование (сентябрь 2000 г., если память не изменяет) о долгожданном чипсете i815, потенциальном преемнике могучего BX, написано было уже немало. Я же хотел сказать несколько слов о том, как этот чипсет уживается с Linux. Естественно, исходя из собственного опыта, основанного на примере материнской платы Abit SE6, с коей имел счастье пообщаться. Слова эти предназначались для сайта iXBT и ныне воспроизводятся лишь с небольшими коррективами.

Тактико-технические данные

Эта системная плата основана на модификации i815E и поддерживает, соответственно, ATA/100. Имелся вариант ее и для ATA/66 - Abit SL6, несколько более дешевый (150-160 и 130-140 уев, соответственно - на тот момент).

В коробочном варианте Abit SE6 комплектовалась (помимо собственно материнской платы):

  • двумя IDE шлейфами - восьмидесятижильным ATA/66/100 и и сорокажильным ATA/33, визуально различающимися структурой поверхности (первый - практически гладкий) и цветом разъемов (на восьмидесятижильном шлейфе средний разъем серый, концевые - один черный, другой синий);
  • всякого рода дополнительными железяками - задней панелью для корпуса, с соответствующими разъемами, выносным разъемом для COM2, температурным датчиком;
  • диском с программным обеспечением для Windows всякого рода;
  • руководством пользователя.

На самой плате, кроме набора микросхем логики, присутствовали:

  • процессорное гнездо Socket 370, поддерживающее процессоры PIII/500-1000 и Celeron/300A-733;
  • три DIMM-разъема для памяти PC-100 или PC-133 (66-мегагерцная память не поддерживалась как класс), максимальным объемом 512 Мбайт; при этом, в соответствие со спецификацией чипсета, при заполнении третьего разъема (5-6 банки), частота шины памяти, не зависимо от типа последней, автоматом переходит на 100 мегагерц;
  • слот AGP для установки внешней видеокарты соответствующего стандарта или т.н. AIMM-модуля видеокэша объемом 4 Мбайт (опционально, в комплект не входил); впрочем, в руководстве о первом варианте не было сказано ни слова;
  • шесть слотов PCI и ни одного - ISA;
  • два IDE разъема ATA/100 и разъем для флоппи-дисковода.

Имелся свитч для грубой установки частоты процессорной шины - 66, 100 или 133 Mhz (более точная настройка осуществлялась через BIOS). Имелся также и джампер для сброса CMOS Setup.

На задней стороне платы были смонтированы COM1 и LPT, VGA-разъем для встроенной видеосистемы, разъемы PS/2 для мыши и клавиатуры, два разъема USB, игровой порт и звуковые входы и выходы (Line-in, Line-out, микрофон). Второй COM-порт - выносной, на заглушке в заднюю стенку корпуса, подсоединяется к коннектору на плате (блокируя, понятное дело, один из PCI-слотов).

Это - из главного. Из архитектурных излишеств имели место быть:

  • слот VL1 (между AGP и PCI) для дополнительной карты, обеспечивающей подключение второго монитора, телевизора или жидкокристаллической панели; разумеется, он может использоваться только при отсутствии внешней видекарты;
  • слот CNR для мифических (или футуристических) программных сетевых карт, возможно - модемов и прочего; насколько я знаю, пока таких устройств никто своими глазами не видел;
  • коннектор для второй пары разъемов USB, выводимых на переднюю панель корпуса; впрочем, это опция, самих разъемов в комплекте нет;
  • всякого рода коннекторы - для модема и сетевой карты, термодатчиков, дополнительных вентиляторов, инфракрасного порта.

В общем, имелось, как будто, все необходимое. И даже кое-что лишнее. Оставалось посмотреть, как она, эта мама,

В составе готовой системы

Плата была вкручена в корпус In-Win (с 250-ваттным блоком питания), содержащем:

  • винчестер IBM-DTLA-307015 о 15 Гбайт (7200 об. мин, ATA/100);
  • CD-RW Mitsumi CR-4802TE (запись/перезапись/чтение - 4/2/8);
  • флоппи-дисковод.

В плату были вставлены:

  • процессор P-III/733EB (не правда ли, опять на Лопе де Вега похоже?) - C-Mine, FSB 133 Mhz, 256 кэша L2 на частоте процессора;
  • память 128 Мбайт PC-133 производства Micron, вроде бы 8 нс;
  • видеокарта ASUS AGP-V3800Magic (на Riva TNT-2 M64) с 16 Мбайт памяти SDRAM;
  • звуковая карта PCI неизвестного генезиса на чипе ESS1869;
  • плата видеозахвата Fly Video на чипе Brooktree Corporation Bt848, та, что без телетюнера.

К соответствующим разъемам системного блока были прикручены монитор Acer 76i (17 дюймов), 3-кнопочная мышь Logitech PS/2, клавиши Mitsumi с тем же разъемом, принтер HP DJ 840, колонки и микрофон неизвестной родословной.

Все это богачество не без успеха питалось от сети очень переменного тока через бесперебойник APC Back-UPS 300. Что и было доказано благополучным включением машины и запуском BIOS Setup.

BIOS платы - Award'овского происхождения. Подробно о нем говорить не буду. Остановившись только на наиболее важных моментах. Из которых первым по праву (да и по порядку) является фирменная (хотя на этот счет существуют противоречивые мнения) технология Soft Menu, имеющая номер II.

А в ней первым пунктом идет определение процессора. Штатно можно выставить частоты от 300 мегагерц (при 66 на шине) до 933 (при 133 FSB). Имеется также и частота в 1 гигагерц, но частота шины при этом не указана. Ну и, естественно, есть User Define для установки произвольной частоты.

При штатных частотах процессора и системной шины частота шины памяти могла принимать значения 100, 133 Mhz и Auto. Последнее в моем случае правильно определило мою PC-133 память.

При выборе пользовательского определения частоты процессора активизируется опция ручного подбора частоты FSB. В сцепке с ней в различных сочетаниях меняются частоты шин памяти и PCI. Что имеет вид, например, 133Mhz (4:4:1) - для FSB, SDRAM и PCI, соответственно. В моем случае это отвечало 733 Mhz внутренней частоты процессора, по 133 Mhz на шинах системной и памяти. Из чего можно заключить, что за единицу принята частота PCI (33 Mhz).

Диапазон значений FSB - 66-153 Mhz, шаг - 3-5 Mhz. В интервале от 66 до 125 Mhz FSB шина памяти коэффициент умножения шины памяти зафиксирован на 3 (то есть 100 Mhz, 66-мегагерцная память, как уже говорилось, не поддерживается). Начиная со 125 Mhz FSB память можно тактировать и на 133 Mhz. А вот обратный вариант - использование 133 Mhz на шине памяти при частоте FSB в 100 Mhz, - не реализован.

Следует заметить, что по умолчанию выставлена частота шины памяти в 100 Mhz. Что, как будет показано ниже, не есть мудро при памяти PC-133.

Имелась в меню возможность изменения множителя шины FSB. Впрочем, как всем понятно, чисто теоретическая: "камни" от Intel с нефиксированным коэффициентом умножения уже тогда давно стали достоянием истории.

Имеется и опция изменения напряжения на ядре процессора. Каковой, впрочем, никогда не пользовался, и другим не советую: ведь ее применение заведомо требует отсутствия азарта (увлекшись, можно и запах жареного почувствовать). А оверклокер без азарта - "так это ж пьянка без вина"... Хотя при экстремальном разгоне без этого не обойтись.

Из других (в общем, более-менее обычных для Award'а) пунктов BIOS Setup мое внимание привлекла возможность определения трех загрузочных устройство последовательно: 1-го, 2-го и 3-го. Каждое из которых может быть любым диском (от HDD0 до HDD-не помню сколько), SCSI, CD ROM, ZIP, LS-120, FDD. Или - быть отключенным как класс.

Долго искал в BIOS'е возможность отключения встроенного видео. Безуспешно. В пункте, повествующем о встроенной периферии, есть только опция переключения 1-го дисплея - Onboard/AGP или PCI. Здесь, конечно, интересней было бы два "ИЛИ". Но, как показала практика, встроенное видео отключается просто фактом установки видеокарты в слот AGP.

А вот встроенный аудиокодек, при использовании внешней звуковой карты, нужно отключить явно.В том же пункте о встроенной периферии. Иначе работать внешняя карта не будет.

Операционная система и тесты

Покопавшись с BIOS'ом, я перешел к установке системы. Для этого на диске создаются разделы:

  • primary partirion в 2,5 Гбайт под ext2fs;
  • swap-раздел размером 128 Мбайт;
  • два extended-раздела (под ext2fs) - /usr/local и /home, 1 и 11 Гбайт, соответственно.

Устанавливался Linux Mandrake 7.0/RE, содержащий ядро 2.2.14, glibc 2.1.2, XFree86 3.3.6. SVGA-сервер - из комплекта, хотя есть и сервер NVIDIA, специально предназначенный для видеокарт на чипе TNT (2). В X Window было выставлено разрешение 1024*768 при 16-битной глубине цвета.

Тут наступило время подумать, на чем мерять быстродействие всего этого хозяйства. На сей предмет мною было изготовлено несколько кустарных теста, опробованных на паре предыдущих машин.

В первую голову это серия глубоко вложенных подкаталогов, содержащих небольшие файлы (HTML, GIF, JPEG, PNG, DjVu); которые посредством скрипта в консольном режиме копируются с места на место. Как ни странно, это, в первую очередь, нагрузка не на диск, а на процессор (включая кэш и системную память). Поскольку в Linux'е дисковые операции кэшируются в оперативной памяти. Кто не верит - смотрите внимательно на индикатор активности винта при копировании кучи мелких файлов под Linux (суммарный объем их может достигать многих мегабайтов): редко когда загорится красный огонек...

Далее, изготовляется геологическая карта размером 2560*1586 и экспортируется в некомпрессированный TIFF. Что дает файл размером 11,6 Мбайт. Этот файл в GIMP'е (под WindowMaker'ом)

  • поворачивается на фиксированный (90 градусов) угол;
  • вращается на произвольный (для определенности и единообразия - 52 градуса) угол;
  • подвергается гауссовому размытию с радиусом 10 пикселей.

В чем физический смысл этих, в общем достаточно элементарных, манипуляций? В первую очередь это пересчет пикселей, то есть скорость его их определяется быстродействием процессорной (в широком смысле слова, включая кэш и системную память) подсистемы. При повороте на произвольный угол (и, в меньшей степени, при размытии) на это накладывается еще и быстродействие видеоподсистемы - изрядную долю времени занимает просто перерисовка экрана. Но при одной и той же видеокарте определяющей является процессорная составляющая. А размер файла подобран (методом ползучего эмпиризма) таким образом, чтобы обеспечить достаточную длительность процесса. И при этом свести к минимуму влияние дисковой подсистемы (при данном объеме оперативной памяти индикатор жесткого диска активности не проявляет).

Я не настаиваю на строго количественном характере своих тестов. Но уверен, что качественную оценку чистого быстродействия конкретного железа в реальной работе они дают. Ничуть не менее значимую, чем кадры в секунду при игре в Quacke. Хотя бы потому, что под последний все, кому ни лень, оптимизируют и железо, и драйверы к нему. А вот до оптимизации такой под Linux-программы мы пока не дожили...

К сожалению, пришлось отказаться от использования в качестве тестовой системы StarOffice (к сожалению - потому что это мог бы быть инструмент межплатформенного сравнения, ведь он существует и под Linux, и под Windows, и под Solaris обоего рода). Дело в том, что измерения посредством его оказались практически невоспроизводимы: скорость загрузки его самого, открытия любого документа или манипуляции с последним, как оказалось, могут различаться буквально на порядки - в зависимости от того, обращаетесь ли вы к этому файлу и операции впервые за сеанс (Linux'а. не X Window!) или повторно. Вероятно, опять же вследствие кэширования. Для чистоты экспреимента это потребовало бы полной перезагрузки системы после каждого действия. А согласитесь, перезагружать Linux по несколько десятков раз на дню - занятие не из самых веселых и здоровых...

Результаты

В то время мне не были известны результаты тестирования аналогичных (или хотя бы близких) конфигураций под Linux'ом. Поэтому никаких внешних объектов для сравнения у не имелось. Так что оставалось прибегнуть к сравнению за счет внутренних ресурсов. То есть - к разгону.

Для начала были опробованы установки по умолчанию - FSB 133 Mhz, шина памяти 100 Mhz, внутренняя частота процессора 733 Mhz. Значения производительности (в секундах) при этих параметрах сравнивались с нормальными рабочими установками - то же, плюс шина памяти на 133 Mhz. Результаты оказались весьма неожиданными (таблицы 1 и 2 - конечно, я понимаю, что интерес они нынче представляют разве что исторический:-)).

Таблица 1. Абсолютная производительность, с

Configuration Copy files Rotation for 90 Free rotation Gaussian Blur
704-128-133 6.97 8.53 28.13 19.72
715-130-133 6.53 8.50 27.07 19.68
733-133-100 7.19 9.78 27.94 19.81
733-133-133 5.69 8.29 24.71 18.37
754-137-100 4.60 8.81 27.32 19.19
754-137-133 Не загрузилось ядро
770-140-100 4.34 9.19 27.63 19.05
770-140-133 Машина не запустилась
800-145-100 6.58 9.28 26.40 18.50
825-150-100 6.59 8.50 26.63 17.97
842-153-100 6.97 9.72 25.81 17.88

Таблица 2. Производительность относительно P-733/133/133, %%

Configuration Copy files Rotation for 90 Free rotation Gaussian Blur
704-128-133 122 103 114 107
715-130-133 115 103 110 107
733-133-100 126 118 113 108
733-133-133 100 100 100 100
754-137-100 81 106 111 104
770-140-100 76 111 112 104
800-145-100 116 112 107 101
825-150-100 116 103 108 98
842-153-100 122 117 104 97

Примечание к табл. 1 и 2: меньшие значения, естественно, соответствуют лучшему результату.

Как можно видеть из таблиц, увеличение чистого быстродействия памяти на 1/3 дает прирост производительности от 8 до 26%. При этом он максимален для теста копирования файлов, где быстродействие подсистемы процессор-кэш-системная память не осложняется влиянием графического режима. Для тестов GIMP различия сглаживаются, как уже говорилось, за счет нивелирующего влияния видеоподсистемы.

Идея дальнейшего исследования состояла в плавном изменении частоты системной шины (с минимально возможным шагом, 3-5 Mhz) и соответственно, внутренней частоты процессора при обоих возможных значениях шины памяти. К сожалению, осуществить ее не удалось. Уже при частоте FSB 137 Mhz установка частоты памяти 133 Mhz вызвала сообщение о невозможности загрузить ядро Linux. А при частотах FSB и памяти 140 и 133 Mhz, соответственно, система отказалась грузиться вообще.

Тем не менее, при частоте шины памяти 100 Mhz удалось достигнуть максимально возможной частоты FSB - 153 Mhz. Однако радости это принесло мало.

Так, скорость копирования файлов плавно возрастала до внутренней частоты 770 Mhz (до 25%, см. табл.2). А затем упала на 16% при частоте 800 Mhz и на 22% - при максимально возможной частоте 842 Mhz.

В тестах вращения (как на фиксированный, так и на произвольный угол) ни при какой частоте FSB понижение частоты шины памяти давало снижение быстродействия на 5-10%, не зависимо от частоты FSB. И только гауссианово размытие еле заметно ускорилось при частотах FSB 150-153 Mhz.

Повторяю, я далек от того, чтобы абсолютизировать полученные цифры. Однако, на мой взгляд, тенденцию они безусловно отражают. А именно: снижение частоты шины памяти (и, соответственно, ее абсолютного быстродействия) приводит к ощутимому снижению быстродействия на реальных приложениях Linux. Которое не только не компенсируется увеличением частоты FSB и внутренней частоты процессора, но в ряде случаев даже усугубляется ими.

Для пущей проверки этой тенденции я решил прибегнуть, если так можно выразиться, к ловерклокингу. То есть, сохранив частоту шины памяти 133 Mhz, стал плавно понижать частоту FSB - сначала до 130 Mhz, затем - до 128. К сожалению, при более низких частотах FSB частота памяти автоматически устанавливается на 100 Mhz - проверить вариант с FSB на 100 Mhz и памятью на 133 не удалось.

Результаты подтвердили мои предположения: даже в сочетании 704-128-133 быстродействие системы (хотя и несколько падало относительно варианта 733-133-133) оставалось чуть выше, чем при установках 733-133-100. А иногда оказывалось выше, чем при нештатных повышенных частотах. Опят-таки, в абсолютных значениях разница не велика, но тенденция - налицо.

Выводы

В чем причина этого явления? Рискну высказать предположение.

Повышение быстродействия процессора и системной шины без адекватного ускорения работы памяти вызывает увеличение задержек при обращении к последней. В результате суммарное быстродействие системы на реальных задачах не только не растет, но в ряде случаем может падать, и весьма ощутимо.

Это особенно выражено для консольных задач, скорость исполнения которых определяется исключительно взаимодействием процессор-кэш-память. В графическом режиме закономерность выражена несколько меньше. Так как в этом случае параллельно с частотой FSB растет и частота шины AGP, несколько увеличивая скорость вывода графики (если, разумеется. выдерживает видеокарта).

Хочу подчеркнуть, что цифровые результаты тестов полностью согласуются с субъективными оценками быстродействия при реальной работе. Так, торможение консольных приложений при переходе к предельным частотам FSB (150-153 Mhz) ощущаешь просто физически. Так же как и замедление программ графического режима, едва только переключаешь частоту шины памяти на 100 Mhz. Собственно, именно эти субъективные ощущения и подвигли меня на проведение квазиколичественных оценок...

Каковы практические следствия проведенного исследования? Их несколько. По крайней мере, при работе в Linux - на Windows я свои выводы распространить бы не рискнул.

Во-первых, с точки зрения цена/производительность сочетание относительно дешевого процессора со 100-мегагерцной шиной (речь идет только о продукции Intel) и памяти PC-133 может дать больший эффект, чем более дорогого 133-мегагерцного процессора и памяти PC-100. разумеется, если чипсет допускает асинхронную работу памяти.

Во-вторых, и это ставит в заведомо невыгодное положение чипсет i815 - в нем первое сочетание, разумеется. возможно, но уж больно велик числитель дроби из предыдущего абзаца. Тогда как применение новых чипсетов VIA способно снизить этот числитель до предела (разница в цене мам на VIA и i815 - практически двухкратная, сами знаете, в чью пользу).

В третьих, можно поставить под сомнение целесообразность разгона. Не сочтите меня беспринципным ренегатом. Ведь всегда ратовал за разгон, а тут... Так вот, хоть и мысль изреченная банальна, изрекаю:

На современном этапе процессорострительства разгон (если не играть в Quacke, конечно) никакого практического смысла не имеет. Тем более - под Linux, и еще тем болей - если выполняется некая практическая работа. Прирост производительности - сомнителен (а иногда - урост просто несомненен). Последствия же могут быть печальными. Ведь это в Windows при мертвом висе нажал Reset - и после принудительного лечения (ScanDisk'ом, то есть) все более-менее приходит в норму... В Linux же это грозит разрушением файловой системы и прочими приятными развлечениями. Одно утешает - как показал мой (пока ограниченный) опыт, Linux - не дурак, если что не так, он просто не загрузится...

Рассуждая теоретически, можно предположить: максимальный выигрыш от разгона можно получить на старом добром BX-чипсете. На тех его мамах, которые (полу-) штатно поддерживают 133 Mhz на FSB. Ведь здесь пропорционально скорости последней, будет возрастать и быстродействие памяти. Если последняя сдюжит, конечно...

Правда, предварительные результаты этого, как будто, не подтверждают: P-733 на i815 дал просто научно-фантастический выигрыш по сравнению с P-533 на разогнанном BX. Однако: ведь речь шла о сравнении процессоров двух разных архитектур (C-Mine и Katmai, соответственно). Так что, возможно, основной вклад в этот прирост был обусловлен не двустами лишними мегагерцами процессора, а трехкратным ускорением кэша второго уровня? В свете влияния подсистемы памяти на суммарное быстродействие под Linux, такой вывод представляется вполне обоснованным.

В этой связи было бы интересно исследовать T-Bird с его сумасшедшим кэшем первого уровня, большим его суммарным эффективным объемом и быстродействием кэша L2. Теоретически рассуждая, это может быть самая эффективная система для использования под Linux'ом...