6

Моя система замедляется, даже когда загрузка процессора составляет менее 100%, и я думаю, что это происходит из-за записи в раздел подкачки. Да, мой раздел подкачки находится на другом диске, чем моя ОС. Я помню этот тип проблемы замедления из-за использования дисков ATA в Windows. Это было решено с помощью режима DMA. Я не уверен, что мои диски используют режим DMA. Это диски SATA, поэтому я предположил, что они есть. Это вывод из hdparm

/dev/sda:
 multcount     =  0 (off)
 IO_support    =  1 (32-bit)
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 182401/255/63, sectors = 2930277168, start = 0

ev/sdb:
 multcount     =  0 (off)
 IO_support    =  1 (32-bit)
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 30401/255/63, sectors = 488397168, start = 0

В последний раз я видел такой тип замедления в Windows 3.1!

Вывод hdparm -i /dev /sda /dev /sdb выглядит так:

/dev/sda:

 Model=ST31500541AS, FwRev=CC34, SerialNo=6XW0N2LJ
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=0kB, MaxMultSect=16, MultSect=off
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=2930277168
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
 AdvancedPM=yes: unknown setting WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-4,5,6,7

 * signifies the current active mode


/dev/sdb:

 Model=HDT722525DLA380, FwRev=V44OA96A, SerialNo=VDB41BT4EUH03C
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=52
 BuffType=DualPortCache, BuffSize=7674kB, MaxMultSect=16, MultSect=off
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=488397168
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
 AdvancedPM=yes: disabled (255) WriteCache=enabled
 Drive conforms to: ATA/ATAPI-7 T13 1532D revision 1:  ATA/ATAPI-2,3,4,5,6,7

 * signifies the current active mode

Когда система замедляется, это вывод из free:

             total       used       free     shared    buffers     cached
Mem:       3538356    3057180     481176          0       8588     280412
-/+ buffers/cache:    2768180     770176
Swap:      5124692    1563140    3561552

2 ответа2

15

Вы не задавали вопрос. Я полагаю, вы хотели спросить «почему моя система работает медленно» или «как я могу сделать это быстрее», оба из которых слишком расплывчаты, чтобы отвечать за них. Я собираюсь частично ответить на менее амбициозный вопрос: «Как я могу исследовать мое узкое место в производительности».

Видимо, когда ваша система не отвечает, на диске много активности. Мой ответ основан на этом.

RAM и своп

Независимо от того, насколько быстро у вас есть диск, обмен будет медленным. Вы ничего не можете сделать, чтобы сделать обмен заметно быстрее. Если ваша система меняет местами, единственное реальное лечение - использовать меньше памяти или покупать больше памяти.

Интерпретация выходных free

Вы можете получить снимок того, сколько памяти использует ваша система, с помощью команды free . Это показывает что-то вроде этого:

             total       used       free     shared    buffers     cached
Mem:       3538356    3057180     481176          0       8588     280412
-/+ buffers/cache:    2768180     770176
Swap:      5124692    1563140    3561552
  • Mem , total цифра (здесь 3538356, что составляет около 3,3 ГБ) - это объем оперативной памяти, доступной процессам (за исключением памяти, используемой видеокартой или ядром).

    (Люди с 64-битным ядром могут пропустить этот параграф.) Из-за сложностей в архитектуре x86 ядро может получить доступ к ОЗУ несколькими способами. Сегодня на практике вы можете выбрать один из двух режимов: режим PAE , который позволяет ядру использовать до 64 ГБ ОЗУ; и режим без PAE, который позволяет ядру использовать только около 3 ГБ. Причина, по которой существует режим без PAE, заключается в том, что у режима PAE есть накладные расходы на использование памяти, что стоит затрат только при наличии более 3 ГБ ОЗУ. Обеспокоенные пользователи Ubuntu должны прочитать страницу PAE в вики Ubuntu.

  • Mem , free рисунок показывает, сколько памяти не используется ни для чего. Обычно он достаточно мал (например, 10–50 МБ в системе с несколькими ГБ ОЗУ), если только ОЗУ не используется недостаточно или система только что загрузилась. Здесь эта цифра довольно высока (450 МБ), возможно, потому, что приложение, использующее столько памяти, было недавно закрыто. Не волнуйся, скоро он заполнится.

  • Строка с заголовком -/+ buffers/cache показывает, сколько памяти используется процессами, а не дисковым кешем. Здесь мы видим, что для кэша доступно всего около 730 МБ. Это всего лишь 20% оперативной памяти, это не так много. Наличие большого объема оперативной памяти, используемой для дискового кэша, важно для обеспечения отзывчивости системы.

  • Последняя строка указывает, сколько свопа используется. Это нормально, когда используется своп, даже если оперативная память не заполнена. Linux копирует память для превентивной замены, когда диск простаивает, в случае, если память понадобится позднее, когда диск может не простаивать.

    Linux часто перемещает память процесса для подкачки, чтобы освободить место для дискового кэша. Это нормальное поведение системы, и попытка снизить его может привести к замедлению работы системы. Существует настраиваемый параметр, на который Linux должен поменяться местами, который называется vm.swapiness ; Если вы экспериментируете с этим, обязательно попробуйте увеличить свопинг, а также уменьшить его.

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

Так что использует всю эту память?

Анализировать использование памяти сложно. Для каждого процесса вы можете измерить, сколько адресного пространства он выделяет; Вы можете (попытаться) измерить, сколько памяти он активно использует в данный момент времени; Вы должны отслеживать память с файловой поддержкой (например, код, загруженный из исполняемого файла процесса и библиотек) и память без файловой поддержки (стек и куча процесса). И, конечно, значительный объем памяти распределяется между процессами, поэтому не имеет особого смысла говорить о том, сколько памяти использует данный процесс.

Вы можете получить представление об использовании памяти с помощью инструментов командной строки, таких как top и htop , или с любым количеством графических системных мониторов и измерителей производительности. Для htop , если вы заинтересованы в использовании памяти, включите опции «скрыть потоки ядра» и «скрыть потоки пользовательского пространства» в параметрах настройки / отображения.

При отображении top или htop соответствующие столбцы - это VIRT и RES . VIRT указывает, сколько адресного пространства выделил процесс, включая разделяемую и выделенную, но неиспользуемую память; не беспокойся об этом. RES указывает, сколько оперативной памяти (т.е. не считая подкачки) процесс использует в настоящее время.

Один из способов убедиться, что ваша система активно переключается, - это смотреть top дисплей во время работы. Если вы видите, что показатель RES растет для некоторых процессов, а для других - уменьшается, это означает, что последние процессы меняются местами, чтобы освободить место для первых. Если это случается часто, вам нужно больше оперативной памяти, чтобы чувствовать себя комфортно с вашими моделями использования.

Скорость диска

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

Вы можете подтвердить использование режима DMA вашей системой с помощью hdparm -i . Например, оба ваших диска показывают UDMA modes: … *udma6 , что означает, что они используют самый быстрый доступный режим. (Как правило, UDMA быстрее, чем DMA, быстрее, чем PIO; а для числовой части, чем выше, тем быстрее.)

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

Иногда BIOS вашего компьютера позволяет вам выбирать между различными режимами работы ваших дисков. Когда появились первые диски SATA, многие операционные системы (такие как Windows и Linux) не поставлялись с подходящими драйверами. Таким образом, в BIOS появилась возможность использовать режим эмуляции PATA, который в принципе был медленнее, но более совместим. В то время диски были недостаточно быстрыми для насыщения SATA-соединений, но в наши дни это возможно. Совместимая настройка часто называется «IDE» или «ATAPI», в то время как более быстрая настройка обычно называется «AHCI».

Ошибки диска

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

Чтобы узнать, так ли это, просмотрите журналы ядра, обычно в /var/log/kern.log . Если вы видите строки, как

end_request: I/O error, dev sda, sector 123456789
ata3.00: error: { UNC }

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

Вы можете получить отчет о состоянии вашего диска с помощью инструментов мониторинга SMART.

1

Я всегда загружаю все мои нетбуки и ноутбуки: Ubuntu-32 и Win7-32. Один HDD. Разделы кэша, temp и swap должны быть на самом быстром диске, рядом с первыми кластерами диска. Скорости ввода-вывода там самые высокие.

Ubuntu, как я использую его, кажется, редко использует диск подкачки. 4 ГБ оперативной памяти SODIMM DDR3, то есть 4 ГБ подкачки, используется для ОБА загрузочных разделов Ubuntu. Оба моих варианта Ubuntu находятся в расширенном разделе. Все 3 операционных системы используют один и тот же раздел DATA, также в расширенном разделе. Этот раздел данных MS-NTFS-сжатый. NTFS-3G, используемый в Linux, не сжимается как раздел. На медленных жестких дисках с низким энергопотреблением («зеленые») чтение и запись ввода-вывода происходит медленно, поэтому сжатие в небольшие кластеры происходит быстрее. Microsoft утверждает, что дополнительные циклы процессора (в формате ZIP) незначительны.

У меня в ноутбуке Acer 5740 терабайтный жесткий диск; I3 CPU, поэтому очень медленная графика. Первоначально новый ноутбук имел Win7-64bit, но слишком большое количество программ и оборудования вызывает проблемы с 64-битной версией. Кроме того, графический процессор жует 4 ГБ ОЗУ как «память с осколками», так что 32-разрядная версия или 32-PAE для Linux - это нормально.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .