Installation of .net framework 3.5 on Windows Server 2012

(пост из старых заметок)

If you have Windows Server 2012 iso file or DVD, you can install .net framework 3.5 on Windows Server 2012 easly.
1. You have to insert Windows Server 2012 DVD or iso to D drive (change letter according to your configuration).
2. Open Add Roles and Features Wizard
3. Select .NET Framework 3.5 Features and then click next,
4. Select Specify an alternate source path link in the Confirm installation selections screen.
5. Path: D:\Sources\SxS and then click OK.
6. Finally click Install button.

Как сконвертировать звукозапись в sln формат для использования в Asterisk

(пост из старого черновика)
Asterisk не поддерживает .wav формат, который используется во многих программах звукозаписи. Можно доустановить пакет поддержки mp3 для Asterisk, но пишут, что обработка mp3 довольно ресурсоемкая, потому лучше использовать gsm или sln.
Записывать будем программой Audacity, которая доступна в любом дистрибутиве Linux. Конвертировать будем в командной строке с помощью консольной утилитки sox.Для начала запишем звуковой файл с помощью микрофона и программы Audacity  (в консоли набрать aptitude install audacity – если не установлена)

Далее выделяем нужный фрагмент записи и выбираем в меню File -> Export Selection

В открывшемся диалоге внизу выбираем формат GSM

Заливаем получившийся файл на сервер. Например scp /filepath/file.gsm user@server:/path/
НО Asterisk не хочет хавать так записанные файлы 🙁 Нужно их сконвертировать, например, в формат sln. В консольке набираем команду:

sox file.gsm -t raw -r 8000 -s -2 -c 1 file.sln

Теперь можно спокойно скормить Asterisk’y наш звуковой файлик. (стандартный путь в Debian – /usr/share/asterisk/sounds/ )

Некоторые команды управления postfix MTA

Посмотреть активные настройки Postfix:
postconf -d
Посмотреть сколько сообщений в очереди:
mailq | grep Requests
Посмотреть конкретно что в очереди:
mailq
Пнуть очередь на немедленную доставку:
postsuper -r ALL; postfix flush
Пнуть конкретное письмо по ID:
postsuper -r ID
Удалить письмо по ID:
postsuper -d ID
Удаление группы писем от определенного FROM (на примере MAILER-DAEMON):
FreeBSD:
mailq | grep 'MAILER-DAEMON' | awk '{print $1}' | xargs -I{} -n1 postsuper -d {}
Linux:
mailq | grep 'MAILER-DAEMON' | awk '{print $1}' | xargs -I{} -n1 /usr/sbin/postsuper -d {}
Удаление группы писем от определенного FROM в статусе REQUIRE:
mailq | grep 'MAILER-DAEMON' | awk '{print $1}' | tr -d '*' | xargs -I{} -n1 postsuper -d {}

Исключение пакетов из операции в yum (RHEL)

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

Есть два способа.

1) Единоразово – когда запускаете yum, использовать опцию –exclude:

yum –exclude=package* update
yum –exclude=php* update
yum –exclude=*rrd* update
yum –exclude=kernel*,*snmp,perl* update

2) Добавить необходимые пакеты в исключения в конфигурационном файле /etc/yum.conf :
exclude=php* kernel*

Выглядеть это будет примерно так:
[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
distroverpkg=redhat-release
tolerant=1
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
exclude=php* kernel*

Теперь эти пакеты исключатся из обработки любыми командами yum.

Как загрузиться в single-user режим с загрузчиком grub в Linux

Бывают ситуации, когда нужно включить/перезагрузить сервер в режиме single-user, в котором не загружаются драйвера и нет возможности работать в многопользовательском режиме – что-то вроде Безопасного режима Windows. Например, если на сервере не правильная сетевая конфигурация и он после включения сразу же будет конфликтовать с другими серверами по IP, то в single-user режиме сеть не поднимется и можно будет исправить конфигурацию.

Чтобы это сделать, необходимо при появлении загрузочного экрана Grub:

и во время отсчета нажать любую клавишу (кроме Enter), чтобы зайти в интерактивное меню. Важно не пропустить момент, т.к. таймаут по-умолчанию составляет 3 секунды, по истечении которых система загрузится в ядро и с параметрами по-умолчанию.

Далее выбираем нужный пункт (версию ядра) стрелками вверх, вниз и нажимаем [a] 

В конце строки параметров загрузки ядра добавляем пробел [Space] и опцию single

Нажимаем [Enter] чтобы загрузиться в нужное ядро с параметром single.

Источники:

  1. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/installation_guide/s1-rescuemode-booting-single

Oracle Linux 6: How to install specific Unbreakable Kernel (UEK) version

If you need to install specific unbreakable kernel (UEK) version for Oracle Linux 6.x you need to complete the following steps:

In this example we will use Oracle Linux 6.8 and our goal is to install 4.1.12-61.1.14 kernel version.

You need to edit /etc/yum.repos.d/public-yum-ol6.repo repository file and search there for UEKx record, where x is the linux release family (4 is the latest for now) and add ‘archive‘ to the path of repository, because by default repository contains only the most recent uek packages:

[public_ol6_UEKR4]
name=Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux $releasever ($basearch)
baseurl=http://yum.oracle.com/repo/OracleLinux/OL6/UEKR4/archive/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=$uekr4

Next you need to install correct packages (assuming that we need to build kernel modules in the future):

yum clean all
yum install kernel-uek-4.1.12-61.1.14.el6uek.x86_64 kernel-uek-devel-4.1.12-61.1.14.el6uek.x86_64 kernel-uek-headers.x86_64

Next, boot into the new kernel version.

Links:

  1. https://yum.oracle.com/oracle-linux-6.html – You can browse and take repository  address from the tab address bar for repository file.
  2. https://yum.oracle.com/oracle-linux-7.html

Cisco Mobility Anyconnect клиент не хочет подключаться из RDP

Если у вас при попытке подключения к VPN с помощью Cisco Mobility Anyconnect клиента в RDP-сессии выскакивает ошибка:

AnyConnect was not able to establish a connection to the specified secure gateway. Please try connect again and and VPN Establishement Capability from a Remote Desktop is disabled

то вам сюда 🙂

Чтобы получить возможность подключаться к VPN из RDP-сессии, нужно отредактировать конфигурационный файл, т. к. этой опции нет в GUI настройках. Находится файл в папке C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Profile, а вот называться он может по-разному, в зависимости от конкретного VPN, к которому подключаетесь. В любом случае, лежит он там и имеет расширение .xml. Или их несколько – если у вас несколько VPN. Например, Contractor.xml. Находим там строчку:

<WindowsVPNEstablishment>LocalUsersOnly</WindowsVPNEstablishment>

и меняем её на:

<WindowsVPNEstablishment>AllowRemoteUsers</WindowsVPNEstablishment>

Всё, теперь клиент должен подключаться, если вы зашли по RDP.

Источники:

  1. https://supportforums.cisco.com/t5/vpn/anyconnect-was-not-able-to-establish-a-connection-to-the/td-p/2634409

ESXi Host and vCenter Server 6.0 to 6.5 update to solve kernel BUG at drivers/net/vmxnet3/vmxnet3_drv.c:1322

Постановка задачи.

Опишу вначале суть проблемы.

Виртуальная машинка под управлением Oracle Linux 6.8 стала самопроизвольно перезагружаться (кернел паник) с ошибкой в логе падения /var/crash/127.0.0.1-yyyy-mm-dd-hh:mm:ss/vmcore-dmesg.txt:

[67476.761292] kernel BUG at drivers/net/vmxnet3/vmxnet3_drv.c:1322!
[67476.761314] invalid opcode: 0000 [#1] SMP

Поиск навёл на статью KB Vmware, в которой говорится, что в версии ESXi 6.5 U1 этот баг с драйвером виртуальной карточки типа vmxnet3 был устранён. Как вариант для решения этого бага поможет замена виртуальных карточек с VMXNET3 на E1000, но мне нужен был железный вариант, поэтому нависла угроза апгрейда 🙂

На тот момент хозяйство для виртуализации представляло из себя следующее:

  1. Основной хост ESXi 6.0
  2. Бекапный хост ESXi 6.5
  3. VCSA vCenter Server 6.5

После изучения темы апгрейдов сформировался следующий план:

  1. Сначала нужно проапгрейдить vCenter Server 6.5 -> 6.5 U1, это необходимое условие перед обновлением хостов.
  2. Обновить бекапный хост 6.5 -> 6.5 U1
  3. Далее нужно перенести VCSA (виртуальная машина с vCenter Server) с основного хоста на бекапный и обновить основной хост 6.0 -> 6.5 U1

Рассмотрим подробнее каждый шаг.

1. vCenter Server 6.5 -> 6.5 U1

Для начала необходимо сделать снапшот и/или бекап VCSA, просто на всякий случай. Также у VSCA должен быть доступ в Интернет, иначе обновляться придётся с диска CD-ROM.

Есть несколько методов апгрейда:

  • через esxcli на самом хосте (ssh)
  • на Windows машине с помощью PowerCLI
  • с помощью появившейся, если не ошибаюсь, в 6.5 версии веб-утилиты VAMI – VMware vSphere Appliance Management.

Руководствуясь принципом KISS обновлять будем через VAMI.

Для доступа к ней, необходимо в браузере зайти на https://your_vsca_ip_or_domain:5480. Обратите внимание, что credentials в данном случае не такие, как для управления инфраструктурой – нужно использовать пользователя и пароль к ОС VSCA. Обычно это root и пароль, который вы указывали при начальной настройке VSCA.

В появившемся окне делаем действия в порядке, как на скриншоте:

Т. е. Выбираем слева вкладку Update, нажимаем Check Update, откроется список, в котором выбираем Check Repository. Дожидаемся окончания проверки. Нажимаем Install Updates, Install Updates. После этого принимаем Лиц. соглашение и скрестив пальцы ждем окончания процесса обновления. По окончании, нажимаем Ок, идём на вкладку Summary, жмем Reboot и подтверждаем перезагрузку:vCenter Appliance загружается и инициализируется довольно долго, минут 5, может быть 10. Поэтому не переживайте, если ОС уже загрузилась, но в браузере выдает ошибки при попытке зайти в интерфейс управления инфраструктурой – подождите.

2. Обновление бекапного хоста ESXi 6.5 -> 6.5 U1

Этот процесс довольно простой, т. к. версия релиза такая же, как и у нужного нам апдейта.

Заходим на флеш-версию интерфейса: https://your_vsca_ip_or_domain/vsphere-client/?csp

Идем в Host and Clusters:

Важно: останавливаем (выключаем, не пауза) все виртуальные машины на хосте перед обновлением!

Выбираем нужный нам хост мышкой и идём на вкладку Update Manager.

Здесь необходимо вначале прикрепить baseline к хосту, для этого нажимаем вначале Scan for Updates, ставим все галочки и Ok. Внизу появится прогресс процесса проверки обновлений, дожидаемся окончания.

Теперь нажимаем Attach Baseline и выбираем Critical Host Patches и Non-Critical Host Patches. Названия говорят сами за себя. Подтверждаем. Можно для верности сделать еще раз Scan for Updates.

Теперь выбираем Stage Patches на вкладке Update Manager.

Выбираем baseline’ы, далее выбираем наш хост и патчи, которые хотим установить.

Собственно для установки патчей нажимаем Remediate на вкладке Update Manager.

Выбираем снова нужные baseline. Затем хост, затем патчи, в Advanced Options можно запланировать апдейт, я ничего не менял и на шаге 5 также всё оставил по дефолту. Соглашаемся и ждем окончания обновления.

3. Обновление основного хоста ESXi 6.0 -> 6.5 U1

VSCA в моём случае находилось на основном хосте и чтобы не рубить ветку, на которой сижу, я решил перенести VSCA на бекапный хост. Воспользовался для этого репликацией в Nakivo Backup & Replication. Рассказ об этой софтине – отдельная тема. В общем, потушил я VSCA на основном хосте и запустил на бекапном.

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

Моя задача еще осложнилась тем, что на сервере установлена карточка Solarflare, драйверов для которой по-умолчанию нет в установочном образе, но они есть в виде VIB и offline bundle на сайте производителя. И эти отсутствующие драйвера необходимо добавить в имейдж.

Для добавления драйверов в установочный образ vmware нам понадобится Windows машина. Ранее использовалась утилита ESXi-Customizer с удобный интерфейсом добавления бандлов, но она уже не поддерживается c 2015 года и для подготовки образа для установки вручную с сд-диска на сервер эта утилита еще подходит, но вот для vCenter – нет, он не принимает образ, созданный ESXi-Customizer. Поэтому будем мучаться с консолью PowerCLI.

Выполняем следующие шаги:

  1. Скачиваем и устанавливаем PowerCLI.
  2. Скачиваем offline bundle драйвер для нужного нам железа. Для Solarflare он находится здесь.
  3. Скачиваем Offline bundle установочного образа vmware с сайта vmware. В моём примере мне нужен был HP customized образ, с драйверами для HP серверов. Внимательно – скачиваем .zip, не .iso!
  4. Создаем отдельную папку (для удобства и копируем туда оффлайн бандлы драйвера и установочного образа. В моем примере буду использовать папку E:\vmware\test.

    Заходим в свойства .zip файлов и нажимаем Unblock – так мы сможем оперировать ими в PowerCLI, запущенной не под Администратором.
  5. Запускаем PowerCLI консоль из Пуск, дожидаемся инициализации.
  6. Добавляем установочный образ, указав путь к нему командой:
     PowerCLI C:\> Add-EsxSoftwareDepot -DepotUrl E:\vmware\test\update-from-esxi6.5-6.5_update01.zip

    Вы увидите похожий результат:

    Depot Url
     ---------
     zip:E:\vmware\test\update-from-esxi6.5-6.5_update01.zip?index.xml
  7. Проверяем, что образ добавлен, должен быть в списке:
    PowerCLI C:\> Get-EsxImageProfile
    
    Name Vendor Last Modified Acceptance Level
    ---- ------ ------------- ----------------
    ESXi-6.5.0-20170701001s-no-... VMware, Inc. 7/7/2017 5:3... PartnerSupported
    ESXi-6.5.0-20170702001-no-t... VMware, Inc. 7/7/2017 5:3... PartnerSupported
    ESXi-6.5.0-20170701001s-sta... VMware, Inc. 7/7/2017 5:3... PartnerSupported
    ESXi-6.5.0-20170702001-stan... VMware, Inc. 7/7/2017 5:3... PartnerSupported
  8. Образ read-only, поэтому для начала нам его необходимо клонировать. Нужно получить имя командой:
    PowerCLI C:\> Get-EsxImageProfile | Select Name
    
    Name
    ----
    ESXi-6.5.0-20170701001s-no-tools
    ESXi-6.5.0-20170702001-no-tools
    ESXi-6.5.0-20170701001s-standard
    ESXi-6.5.0-20170702001-standard
  9. На этом шаге необходимо определиться с тем, какой имейдж клонировать (лучше standard, параметр -CloneProfile), а также с именем нового имейджа (параметр -Name) и названием вендора (параметр -Vendor). Мой пример:
    PowerCLI C:\> New-EsxImageProfile -CloneProfile ESXi-6.5.0-20170702001-standard -Name Test_ESXi_6.5_with_SFC -Vendor TestCorporation
    
    Name Vendor Last Modified Acceptance Level
    ---- ------ ------------- ----------------
    Test_ESXi_6.5_with_SFC TestCorporation 7/7/2017 5:3... PartnerSupported
  10. Для проверки посмотрим еще раз список имейджев, отметив в нём наличие нашего нового:
    PowerCLI C:\> Get-EsxImageProfile | Select Name,Vendor
    
    Name Vendor
    ---- ------
    ESXi-6.5.0-20170701001s-no-tools VMware, Inc.
    ESXi-6.5.0-20170701001s-standard VMware, Inc.
    ESXi-6.5.0-20170702001-no-tools VMware, Inc.
    Test_ESXi_6.5_with_SFC TestCorporation
    ESXi-6.5.0-20170702001-standard VMware, Inc.
  11. Теперь нужно добавить бандл с нашим драйвером примерно также, как и с образом:
    PowerCLI C:\> Add-EsxSoftwareDepot -DepotUrl 'E:\vmware\test\SF-114406-DH-5_(SF-111982-LS-8)_Solarflare_VMware_ESXi_5.5___6.0___6.5_driver_(Offline_Bundle).zip'
    
    
    Depot Url
    ---------
    zip:E:\vmware\test\SF-114406-DH-5_(SF-111982-LS-8)_Solarflare_VMware_ESXi_5....
  12. Узнаем, сколько пакетов находится в нашем бандле командой:
    PowerCLI C:\> Get-EsxSoftwarePackage -SoftwareDepot 'E:\vmware\test\SF-114406-DH-5_(SF-111982-LS-8)_Solarflare_VMware_ESXi_5.5___6.0___6.5_driver_(Offline_Bundl
    e).zip'
    
    Name Version Vendor Creation Date
    ---- ------- ------ ------------
    net-sfc 4.10.4.1000-1OEM.550.0.0.13... Solarflare 1/20/2017...
  13. Теперь мы можем добавить пакет к нашему образу, используя полученное только что имя в параметре -SoftwarePackage:
    PowerCLI C:\> Add-EsxSoftwarePackage -SoftwarePackage net-sfc -ImageProfile Test_ESXi_6.5_with_SFC
    
    Name Vendor Last Modified Acceptance Level
    ---- ------ ------------- ----------------
    Test_ESXi_6.5_with_SFC TestCorporation 2/2/2018 10:... PartnerSupported

    Если у вас несколько пакетов, повторите команду для всех пакетов.

    Если драйвер скачан не из официального ресурса или любительская сборка, то может выбить ошибку вида:

    add-esxsoftwarepackage : VIB VFrontDe_bootbank_net51-r8169_6.011.00-2vft.510.0.0.799733’s acceptance level is
    community, which is not compliant with the ImageProfile acceptance level partner
    At line:1 char:1

    Нужно поменять acceptance level командой:

    PowerCLI C:\> Set-EsxImageProfile -Name new6.5realtek -AcceptanceLevel community

  14. Проверим, есть ли наш пакет в образе, для этого определим переменную и вызовем свойство viblist двумя командами, как показано ниже:
    PowerCLI C:\> $ip = Get-EsxImageProfile -Name Test_ESXi_6.5_with_SFC
    PowerCLI C:\> $ip.viblist
    
    Name Version Vendor Creation Date
    ---- ------- ------ ------------
    ne1000 0.8.0-16vmw.650.1.26.5969303 VMW 7/7/2017 ...
    vmkplexer-vmkplexer 6.5.0-0.0.4564106 VMW 10/27/201...
    sata-ata-piix 2.12-10vmw.650.0.0.4564106 VMW 10/27/201...
    net-usbnet 1.0-3vmw.650.0.0.4564106 VMW 10/27/201...
    i40en 1.3.1-5vmw.650.1.26.5969303 VMW 7/7/2017 ...
    ...
    net-sfc 4.10.4.1000-1OEM.550.0.0.13... Solarflare 1/20/2017...
    ...
  15. Будет длинный список, в котором должен быть наш пакет или несколько, если добавляли не один. Можно упростить поиск путем выборки по вендору, как показано ниже:
    PowerCLI C:\> $ip.viblist | Where-Object {$_.vendor -like "Solarflare*"}
    
    Name Version Vendor Creation
     Date
    ---- ------- ------ ------------
    net-sfc 4.10.4.1000-1OEM.550.0.0.13... Solarflare 1/20/2017...
  16. Теперь нужно экспортировать наш образ собственно в файл .iso для установки/апдейта ESXi хоста. Указываем имя образа и путь к .iso файлу:
    PowerCLI C:\> Export-EsxImageProfile -ImageProfile Test_ESXi_6.5_with_SFC -FilePath E:\vmware\test\ESXi_HPE_6.5_with_SFC.iso -ExportToIso

    Ждем окончания операции и проверяем, что файл создался на диске:

Всё, образ есть, теперь его можно добавить в vCenter. Возвращаемся в веб-морду vCenter и на вкладке Update Manager, где мы устанавливали патчи нажимаем Go to Admin View.

Здесь у меня уже добавлен образ, но вам следует его добавить нажав вначале ESXi Images:

А затем Import ESXi Image, выбрать созданный нами ранее образ и загрузить его:

Идем на вкладку Hosts Baselines и нажимаем + New Baseline, выбираем тип Host Upgrade и вводим имя и описание:

Далее выбираем загруженный нами образ ESXi:

И завершаем процедуру. По окончании, наш новый baseline должен появится в списке в группе Custom на вкладке Hosts Baselines.

Возвращаемся в Update Manager хоста, который хотим апгрейдить и выбираем Attach Baseline, как делали ранее с патчами, только на этот раз выбираем наш новосозданный baseline в группе Upgrade Baselines:

И повторяем процедуру как в пункте 2: Check for Updates, Stage Patches, Remediate. Только вместо патчей выбираем наш апгрейд.

Когда апгрейд закончится и хост снова появится в инвентаре vCenter Server, можете установить патчи на него описанным в пункте 2 способом, чтобы хост был последней версии.

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

Источники:

  1. https://tinkertry.com/easy-upgrade-to-vcsa-65u1
  2. http://blog.myvmx.com/2016/04/custom-esxi-image-iso-using-powercli.html
  3. https://www.v-front.de/p/esxi-customizer.html
  4. http://www.vmwarearena.com/how-to-upgrade-esxi-6-0-to-esxi-6-5-using-vmware-update-manager/
  5. http://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.powercli.cmdletref.doc%2FNew-EsxImageProfile.html
  6. https://www.virten.net/vmware/vmware-esxi-image-profiles/#esxi6.7

Cisco AnyConnect Secure Mobility Client profiles

Есть не совсем очевидная настройка для Cisco AnyConnect Secure Mobility Client – профили. Нужны они для того, чтобы не вводить каждый раз адрес VPN. Удобно, если периодически приходится переключаться между разными VPN.

Профили для ОС Windows находятся в файле (если его нет – создайте):

C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Profile\profiles.xml

Для ОС Linux/Mac путь: /opt/cisco/anyconnect/profile/profiles.xml

Формат такой:

<?xml version=”1.0″ encoding=”UTF-8″?>
<AnyConnectProfile xmlns=”http://schemas.xmlsoap.org/encoding”>
<ServerList>
<HostEntry>
<HostName>VPN1</HostName>
<HostAddress>177.177.177.177</HostAddress>
<User>username</User>
<SecondUser></SecondUser>
<Domain></Domain>
<Group>usergroup</Group>
<ProxyHost></ProxyHost>
<ProxyPort></ProxyPort>
<SDITokenType>none</SDITokenType>
<ControllablePreferences>
<LocalLanAccess>true</LocalLanAccess>
</ControllablePreferences>
</HostEntry>
<HostEntry>
<HostName>VPN2</HostName>
<HostAddress>178.178.178.178</HostAddress>
<User>user2</User>
<Domain></Domain>
<Group></Group>
<ProxyHost></ProxyHost>
<ProxyPort></ProxyPort>
<SDITokenType>none</SDITokenType>
<ControllablePreferences>
<LocalLanAccess>true</LocalLanAccess>
</ControllablePreferences>
</HostEntry>
</ServerList>
</AnyConnectProfile>

Для каждого подключения создается <HostEntry> … </HostEntry>, где теги:

  • <HostName> – просто название подключения, которое будет удобно вам
  • <HostAddress> – доменное имя или IP-адрес хоста, к которому подключаемся

Остальные настройки вроде юзернейма к сожалению не работают. Клиент по-умолчанию использует имя пользователя и группы последнего подключения, который хранится в C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Profile\preferences.xml.

 

 

 

 

Linux. Распределение прерываний

Посмотреть распределение прерываний по ядрам в ОС Linux можно командой:

cat /proc/interrupts

Вы должны увидеть нечто следующее:

Где:

  • Первый столбец — номер прерывания
  • CPU0 .. CPUx — счетчик обработанных прерываний по процессорным ядрам
  • PCI-MSI-edge — тип прерывания
  • Последний столбец — название устройства

Как видите, все прерывания по-умолчанию обрабатываются ядром 0. Что не всегда хорошо.

Перенести обработку прерываний на другие ядра можно как в примерах ниже:

# CPU0
echo 1 >/proc/irq/45/smp_affinity
echo 1 >/proc/irq/46/smp_affinity
echo 1 >/proc/irq/47/smp_affinity
# CPU1
echo 2 >/proc/irq/48/smp_affinity
echo 2 >/proc/irq/49/smp_affinity
# CPU2
echo 4 >/proc/irq/50/smp_affinity
echo 4 >/proc/irq/51/smp_affinity
# CPU3
echo 8 >/proc/irq/52/smp_affinity
echo 8 >/proc/irq/53/smp_affinity

Где цифра после echo определяет маску для используемых ядер. Например, использовать только ядро 0 это будет выглядеть 00000001 в двоичной системе исчисления. Ядро 2 – 00000100. 0 и 2 соответственно 00000101, что соответствует 5 в десятичной системе.

Этот метод действует до перезагрузки. Чтобы сохранить настройки и после перезагрузки просто добавляем эти команды в файл /etc/rc.local – это скрипт, автоматически выполняющий своё содержимое при загрузке ОС.

Источники:

  1. https://cesbo.com/ru/linux/interrupts/