Сколько Контекстных переключений “нормально” (как функция ядер процессора (или другой))?

На рассматриваемых Mac стоит отметить, что необходимо попытаться отключить создание.DS_Store файлов на сетевых ресурсах, если Вы уже не сделали этого. (Детали по MacOSXHints.com)

Дополнительно необходимо знать, что по SMB Вы заметите ._FILENAME файлы создали - это - то, как OS X поддерживает данные ветви ресурсов и такой в других файловых системах. Это может вызвать проблему для кого-то на основанной на Windows машине, если они пытаются открыть неправильный файл.

Возможно иметь сервер не, позволяют эти файлы (в smb.conf, можно установить veto_files =._ *), но где это находится в Windows Server 2003, я не уверен, но я полагаю, что использование этой статьи от TechRepublic должно подтвердить стоящую начальную точку зрения.

34
задан 2 June 2009 в 05:06
5 ответов

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

Высокие уровни контекстного переключения не являются самостоятельно проблемой, но они могут указать путь к более значительной проблеме.

править: Контекстные переключения являются признаком, не причиной. Что Вы пытаетесь работать на сервере? Если у Вас есть многопроцессорная машина, можно хотеть попытаться установить привязку CPU к основным серверным процессам.

Кроме того, если Вы работаете X, попытайтесь раскрыться в консольный режим.

отредактируйте снова: в 16k cs в секунду, каждый CPU составляет в среднем два переключателя на миллисекунду - который является половиной к одной шестой нормального интервала. Он мог работать, много IO связало потоки?

редактирование снова отправляет графики: Конечно, взгляды IO связываются. система проводит большую часть своего времени в SYS, когда контекстные переключения высоки?

редактирование еще раз: Высокий iowait и система в том последнем графике - полностью затмение пространства пользователя. У Вас есть проблемы IO.
Какую карту FC Вы используете?

править: хм. шанс получения некоторых сравнительных тестов, идущих на Ваш доступ SAN с bonnie ++ или dbench во время deadtime? Я интересовался бы наблюдением, если у них есть подобные результаты.

править: Взгляды об этом за выходные и я видел подобные скороговорки использования, когда bonnie делает "запись байт во время" передача. Это может объяснить большой объем переключения продолжения, поскольку каждая запись потребовала бы отдельного syscall.

6
ответ дан 28 November 2019 в 19:53
  • 1
    I' m все еще не убедил, что высокий уровень контекстного переключения не является проблемой, I' m говорящий о высоко как в 4K к 16K, не 100-150. –  Xerxes 29 May 2009 в 08:11
  • 2
    Ни один из наших серверов не выполняет X. Я соглашаюсь с Вами на IO, ожидают проблема и отношения между этим и CS. Плата HBA не является подозреваемым хотя, потому что мы используем ту же карту на другой приблизительно сотне серверов... Заключение состоит в том, что я обвиняю команды SAN дрянной SAN EVA, который они отчаянно пытаются защитить все время. Обратите внимание, что высокий IO-wait не всегда причина, которая будет предупреждена, если большинство процессов на машине является IO-bound, it' s ожидал, что сервер не будет иметь ничего лучше, чтобы сделать, это бездействует вращения. –  Xerxes 29 May 2009 в 10:31
  • 3
    На втором, хотя - 4-й график присоединил шоу это it' s не действительно настолько же близко как я, хотя сначала. Не точно затмение каким-либо образом. Я все еще обвиняю SAN все же.=) –  Xerxes 29 May 2009 в 10:38

Я более склонен коснуться об уровне заполняемости ЦП состояния системы. Если это близко к 10% или выше, который означает, что Ваша ОС проводит слишком много времени, делая контекстные переключения. Хотя перемещение, некоторые процессы к другой машине намного медленнее, она имеет право делать так.

1
ответ дан 28 November 2019 в 19:53

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

Тем не менее у меня есть выполнение серверов (не очень занятые серверы Oracle, главным образом), которые устойчивы вокруг 2k с некоторыми пиками 4k. Для моих серверов, который нормален для серверов других людей, которые могли бы быть слишком низкими или слишком высокими.

Как далеко можно возвратиться в данных?

Какую информацию о ЦП можно дать нам?

1
ответ дан 28 November 2019 в 19:53
  • 1
    Я определенно соглашаюсь с хранением базовой линии, и у нас есть nagios данные, возвращающиеся в течение длительных периодов - проблема с этим сервером - это it' s новая кровь - только вокруг в течение короткого времени. Кроме того, it' s рабочее предприятие (чтение: дерьмо) программное обеспечение - Teamsite - только для добавления к списку неопределенной переменной. Я все еще предпочитаю SAR (персональное предпочтение) так I' ll настраивают его, чтобы сохранить больше, чем значение по умолчанию (2-недельный), и видеть, как это идет. –  Xerxes 29 May 2009 в 11:42
  • 2
    Используя SAR в сочетании с rrdtool (который это похоже на Ваши графики, прибывают из) может быть легкое средство хранения Ваших данных (или по крайней мере краткие обзоры его) в течение долгого времени. –  wzzrd 29 May 2009 в 12:45

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

0
ответ дан 28 November 2019 в 19:53
  • 1
    На самом деле стоимость контекстного переключения дорога . Это даже хуже на Виртуальных машинах - мы сделали некоторое тестирование несколько месяцев назад, которое показало, что одной из самых больших причин производительности VM было контекстное переключение. –  Xerxes 29 May 2009 в 05:13
  • 2
    На самом деле, в любой современной (многозадачной) операционной системе, минимизация контекстного переключения является очень значительной задачей оптимизации. У Вас есть какие-либо источники для резервного копирования заявления, что стоимость является маленькой? –  Xerxes 29 May 2009 в 05:23
  • 3
    Извините, Вы говорите об уменьшении контекстных переключений с точки зрения разработки ОС? Не имея никакого отношения к такой разработке у меня нет мнения о преимуществах разработки системы для уменьшения CS :) Если Вы говорите об уменьшении контекстных переключений на сервере, проблема смягчает контекстные переключения, представляет задержку в других местах. EG, сокращающий количество процессов на машине, означает, что необходимо переместить эти процессы в другую машину, что означает, что коммуникация происходит по сети, которая является очень медленнее! –  Alex J 29 May 2009 в 06:02
  • 4
    Я полагаю, что Ваше определение контекстных переключений испорчено; они также происходят, когда системный вызов выполняется, даже если он возвращается к тому же потоку. Приложения оптимизируют против этого путем выполнения различных приемов. Например, Apache должен получать системное время очень часто; с этой целью поток неоднократно называет localtime и хранит результат в общей памяти. Другие потоки только должны читать из RAM и не подвергаются переключателю процесса при выполнении так. –  niXar 29 May 2009 в 19:26

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

Системные вызовы

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

Когда мы смотрим на определение записи (2) syscall из Linux, это становится очень ясным:

NAME
       write - write to a file descriptor

SYNOPSIS
       #include 

       ssize_t write(int fd, const void *buf, size_t count);

DESCRIPTION
       write() writes up to count bytes from the buffer pointed buf to the file
       referred to by the file descriptor fd. [..]

RETURN VALUE
       On success, the  number of bytes written is returned (zero indicates
       nothing was written). On error, -1 is returned, and errno is set
       appropriately.
       [..]

Это в основном говорит ядру принимать операцию от процесса, перемещаться до count байты, начинающие с адреса памяти, которым указывают *buf к дескриптору файла fd из текущего процесса и затем возвращаются назад к процессу и говорят ему, как он пошел.

Хорошим примером для показа этого является выделенный игровой сервер для Клапана основанные на источнике игры, hlds. http://nopaste.narf.at/f1b22dbc9 показывает одну вторую ценность syscalls, сделанного единственным экземпляром игрового сервера, который не имел никаких плееров на нем. Этот процесс занимает приблизительно 3%-е процессорное время на Xeon X3220 (2.4 ГГц), только чтобы дать Вам чувство для того, насколько дорогой это.

Многозадачность

Другой источник контекстного переключения мог бы быть процессами, которые не делают syscalls, но должны отъехаться данный ЦП для создания места для других процессов.

Хорошим способом визуализировать это является cpuburn. cpuburn, не делает никакого syscalls самого, он просто выполняет итерации по своей собственной памяти, таким образом, он не должен вызывать контекстное переключение.

Возьмите неактивную машину, запустите vmstat и затем выполните burnMMX (или любой другой тест от cpuburn пакета) для каждого ядра процессора, которое имеет система. У Вас должно быть полное системное использование к тому времени, но едва любое увеличенное контекстное переключение. Затем попытайтесь запустить еще несколько процессов. Вы будете видеть, что повышения ставки контекстного переключения как процессы начинают конкурировать по ядрам процессора. Объем переключения зависит от отношения процессов/ядра и многозадачного разрешения Вашего ядра.

Дальнейшее чтение

linfo.org имеет хорошую рецензию на том, каковы контекстные переключения и системные вызовы. Википедия имеет универсальную информацию и хороший набор ссылки на Системных вызовах.

25
ответ дан 28 November 2019 в 19:53
  • 1
    Это было полезно - you' ve, данный меня прекрасная идея!=) –  Xerxes 31 May 2009 в 06:58

Теги

Похожие вопросы