Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0  (Прочитано 825604 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nick Prefesto

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2625 : 26 Октября 2014, 23:10:39 »
Всем привет! Вчера установил "с нуля" новенькую Ubuntu 14.10 на ноутбук Acer Aspire 5750G и сейчас просто счастлив, что появилась возможность полностью распрощаться с порождением капиталистического мышления в лице Windows 7.

Но это не главное. Дело в том, что русскоязычная документация по установке Bumblebee имеет некоторые погрешности и небольшие противоречия, которые наверняка способны вызвать ряд проблем у некоторых пользователей. Мне бы очень хотелось повлиять на внесение корректировок в данную инструкцию, чтобы максимально снизить вероятность возникновения неисправностей у пользователей ноутбуков с технологией Nvidia Optimus. Тем более, как мне кажется, за Ubuntu будущее операционных систем и именно этот дистрибутив Linux имеет все шансы выйти на бесплатный, но в то же время качественный, продуманный и премиальный уровень, сравнимый с нынешней MacOS от Apple. И в этом перспективном будущем нет места недочетам в жизненно важных для новичков официальных инструкциях. Речь пойдет об официальной документации по ссылке ниже:
https://help.ubuntu.ru/wiki/bumblebee   

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

Предположительные ошибки в документации:
1. nVidia Prime
Инструкция гласит, что
Цитировать
Проекты Bumblebee и Nvidia Prime не совместимы между собой. Поэтому, чтобы правильно установить проприетарный драйвер nVidia и Bumblebee, удалите nvidia-prime или удостоверьтесь в его отсутствии
Всё правильно! Но если выполнять по пунктам данную инструкцию, то на шаге 4.1 или 4.2 вместе с драйвером nVidia устанавливается nVidia Prime и в продолжении инстуркции ничего не сказано о повторном удалении "Prime" перед переходом к пункту "5. Установить Bumblebee". Вот и получается, что после четкого и последовательного выполнения всей инструкции, вместе с Bumblebee будет установлен nVidia Prime и тут вполне могут возникнуть серьезные проблемы. Мне кажется, что это очень важное упущение в данной документации и это нужно как-то исправить. По своему опыту подтверждаю, что после выполнения этой инструкции, nVidia Prime наличествует в системе. Может зря панику поднимаю и это нормально?

2. Наличие xorg.conf
Если хотя бы раз установить nVidia Prime, то по пути /etc/X11 появляется конфигурационный файл "xorg.conf", который наверняка нужно удалить перед выполнением инструкции, выполнив команду в терминале:
sudo rm -rf etc/X11/xorg.conf 

3. Обновления драйвера nVidia
В той же документации имеется раздел "Обновление драйвера Nvidia", где ничего не сказано про удаление текущей версии драйвера перед установкой новой. У меня получалось так, что при обновлении с версии 331 до 340, вместе с версией nVidia 331 в систему устанавливалась 340 версия драйвера. В итоге в системе установлены обе версии драйвера и вроде бы они друг другу не мешают, так как после обновления работает именно последняя версия драйвера, а предыдущая просто остается в системе. Но может стоит перед обновлением выполнить команду sudo apt-get purge nvidia* или sudo apt-get purge nvidia-*?
Как мне кажется, более корректный способ удаления приведен по ссылке ниже:
http://compdoma.blogspot.ru/2013/10/nvidia-ubuntulinux.html
А именно "Удаление драйвера через консоль".

4. Нюанс с репозиторием "xorg-edgers".
Если после установки драйвера nVidia из этого репозитория(xorg-edgers) сразу перейти к установке Bumblebee, то он устанавливается не из официального "ppa:bumblebee/stable", а из экспериментального "ppa:xorg-edgers/ppa". Заметил это вчера на Ubuntu 14.10, когда увидел в менеджере пакетов Synaptic приписку "edgers" к установленной версии Bumblebee. Но сразу отмечу, что после перехода на Ubuntu 14.10, у меня репозиторий "ppa:bumblebee/stable" при обновлении пакетов "sudo apt-get update" выдает ошибку "Not Found" и наверняка из-за этого произошла установка из "xorg-edgers". НО НЕ ФАКТ. Может быть так было и тогда, когда работал репозиторий "ppa:bumblebee/stable". Хотя может это и не проблема вовсе и тут даже наоборот хорошо, что устанавливается версия поновее, чем в официальном репозитории Bumblebee.

Большое спасибо за внимание! Надеюсь, что мои наблюдения принесут какую-нибудь пользу. 

Оффлайн www777

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2765
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2626 : 26 Октября 2014, 23:41:32 »
Nick Prefesto,
C инструкция в help беда бесконечная просто. Пишут как могут, обновляют как могут, когда могут. У меня Ubuntu 14.04. Bumblebee и nvidia драйвера я установил на свежей системе одной командой
$ sudo apt-get install nvidia-331-updates bumblebee Я не подключал ppa репозиторий Bumblebee, я не знаю разницы в версиях между оригиналом в дистрибутиве и PPA, но вполне может оказаться, что там её нет. Правда Nvidia-Prime в систему таки попал, и заметил я это не сразу, работало нормально и он не мешал, пока я не увидел пункт настройки Nvidia-Prime в окне nvidia-setting, удалил пакет без проблем.

в PPA Bumblebee нет пакетов для Ubuntu 14.10, да и зачем, всё  что надо в официальном репозитории по умолчанию есть, ставьте от туда и пользуйтесь. Что касается справки, то ей как минимум не хватает аргументирования действий. Например, зачем подключать PPA репозиторий, если есть пакет в основном репозитории, всё это не расписывается, плюс справка писалась когда Ubuntu 14.10 не было. Если есть желание можно вступить в ряды писак. Вопрос только в том, что именно писать :) Можно и поругаться с сообществом, один считает так, другой эдак :)

Цитировать
Наличие xorg.conf
У меня только в наличии xorg.conf.10212014 и xorg.conf.10222014 для чего они не знаю. Но не мешают работе системы.
« Последнее редактирование: 26 Октября 2014, 23:43:42 от www777 »

Оффлайн neon1ks

  • Старожил
  • *
  • Сообщений: 1183
    • Просмотр профиля
    • Блог молодого разработчика
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2627 : 27 Октября 2014, 06:29:49 »
www777,
Сейчас bumblebee wiki правлю в основном я... не успеваю отслеживать все изменения.

Для Ubuntu 14.10 можно использовать такой вариант
sudo apt-add-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get install nvidia-XXX nvidia-settings
sudo apt-get install bumblebee bumblebee-nvidia primus
sudo apt-add-repository -r ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get purge nvidia-prime
где XXX необходимо заменить на версию драйвера. Список доступных драйверов можно посмотреть по ссылке https://launchpad.net/~xorg-edgers/+archive/ubuntu/ppa

В репозитории ppa:xorg-edgers содержится пропатченный bumblebee, который поддерживает драйвер nvidia-340. В стандартном только до версии nvidia-331.

Оффлайн Nick Prefesto

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2628 : 27 Октября 2014, 19:35:48 »
neon1ks,
Большое спасибо за работу над этой документацией. Когда я впервые установил на свой ноутбук Ubuntu 12.04, я столкнулся с трудностями, которые казались мне нерешаемыми. Но благодаря этой инструкции я смог преодолеть эти трудности и для меня стало возможным использование Ubuntu на своей конфигурации компьютера. И мне бы пришлось навсегда отказаться от Ubuntu, если бы я не нашел в тот день актуальное руководство по установке Bumblebee. Да и сколько уже времени прошло с версии 12.04, а я всё так же по традиции следую пунктам этой документации, дожив со своим ноутбуком до версии 14.10. Ну да ладно.

Очень трудно следить за быстрым развитием данного дистрибутива Linux, успевая вносить корректировки в уже сформировавшиеся инструкции. Но, несмотря на это, если и есть какая-то необходимость в исправлениях, то нужна всего лишь одна корректировка, связанная с удалением nVidia Prime после выполнения всех этапов установки Bumblebee. Ведь в самой инструкции практически восклицательным знаком отмечена несовместимость Bumblebee с nVidia Prime и не исключено, что в зависимости от конфигурации и обстоятельств у кого-то из-за этого могут возникнуть проблемы.

nVidia Prime автоматически устанавливается после выполнения этой команды:
sudo apt-get install nvidia-331 nvidia-settings 
И началось это с версии Ubuntu 14.04. На предыдущих версиях операционной системы я такого не замечал, но утверждать не стану, так как нет возможности установить сейчас, например, Ubuntu 13.10 или 12.04, чтобы проверить как там обстоят дела. Но, так или иначе, если человек хочет установить Bumblebee по этому руководству, то вряд ли финальная команда "sudo apt-get purge nvidia-prime" способна нанести какой-то ущерб на новых или уже устаревших версиях Ubuntu.

Оффлайн www777

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2765
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2629 : 27 Октября 2014, 19:44:15 »
Nick Prefesto,
При установке пакета nvidia-331, пакет nvidia-setting будет установлен автоматически, он включён в зависимости, поэтому нет смысла его упоминать в команде установки. Да, до выяснения всех разбирательств, лучше в руководстве в самом конце указать информацию, что бы пользователь выполнил
sudo apt-get purge nvidia-prime а там уже видно будет, сейчас надо сделать именно так, если nvidia-prime не был установлен, хуже от этой команды не будет.

Так чем же отличается Bumblebee из PPA ppa:bumblebee/stable от версии в дистрибутиве Ubuntu 14.04? Или это малёха тайна покрытая мраком? Ну интересно же :)

Оффлайн Grayscale

  • Активист
  • *
  • Сообщений: 573
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2630 : 27 Октября 2014, 20:15:29 »
Ребята. Анализируя работу nvidia-prime, пришел к выводу, что при выборе через графическую утилиту Prime-профиля Nvidia, создается всего навсего xorg.conf файл, который позволяет загрузиться с дискретной видео-картой. Когда перелогиниваемся - рестартуют иксы. И обратно, xorg.conf выпиливается, когда ставим профиль Intel.
Может я не прав, все на личных наблюдениях. В общем, вывод у меня один: если в системе наряду с bumblebee есть пакет nvidia-prime - это не опасно. Bumblebee работать будет и так. Вот только в работоспособности prime в данном случае не уверен.
В мире столько разнообразной фигни.. И в каждой найдется специалист
ASUS K46CB(S46CB) i7-3537U @ 2.0GHz 8Gb RAM + SSD 64 Gb + Manjaro Linux

Оффлайн neon1ks

  • Старожил
  • *
  • Сообщений: 1183
    • Просмотр профиля
    • Блог молодого разработчика
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2631 : 27 Октября 2014, 21:15:59 »
www777,
Последняя версия bumblebee вышла 26 апреля 2013. http://bumblebee-project.org/
Сейчас меняют только зависимости, дописывая новые версии драйверов Nvidia.

Здесь можно посмотреть https://launchpad.net/~xorg-edgers/+archive/ubuntu/ppa/+packages
Цитировать
Changelog

bumblebee (3.2.1-5+xedgers14.10.1) utopic; urgency=medium

  * Support 340 and 343
 -- Rico Tzschichholz <ricotz@ubuntu.com>   Tue, 12 Aug 2014 11:19:07 +0200

Так чем же отличается Bumblebee из PPA ppa:bumblebee/stable от версии в дистрибутиве Ubuntu 14.04? Или это малёха тайна покрытая мраком?По сути они должны быть одинаковыми. Может только зависимостями.

Еще версию пакета Bumblebee из PPA ppa:bumblebee/stable сильно вверх задрали... Поэтому чтобы установить пропатченный bumblebee с поддержкой nvidia-340 и nvidia-343 из xorg-edgers в начале нужно удалить bumblebee, отключить репозиторий ppa:bumblebee/stable, выполнить sudo apt-get update, и только затем установить bumblebee из xorg-edgers.

Оффлайн www777

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2765
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2632 : 27 Октября 2014, 21:24:44 »
Цитировать
Последняя версия bumblebee вышла 26 апреля 2013
Да я читал на сайте, в тот момент релиз 14.04 уже был состоявшимся. И это редкость когда софт обновляют по нормальному после релиза в репозитории...

Оффлайн Nick Prefesto

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2633 : 27 Октября 2014, 21:56:08 »
www777,
Цитировать
При установке пакета nvidia-331, пакет nvidia-setting будет установлен автоматически, он включён в зависимости, поэтому нет смысла его упоминать в команде установки.
Теперь буду знать.
Цитировать
Да, до выяснения всех разбирательств, лучше в руководстве в самом конце указать информацию

Спасибо за поддержку!
Цитировать
Так чем же отличается Bumblebee из PPA ppa:bumblebee/stable от версии в дистрибутиве Ubuntu 14.04?
Наверное, актуальностью версий. Если я не ошибаюсь, то в официальных репозиториях Ubuntu есть Bumblebee, но там он далеко не последней версии и не так часто обновляется, как из "ppa:bumblebee/stable". Уже точно не помню, но вроде бы я устанавливал Bumblebee из репозитория Ubuntu и он нормально работал, но стоило добавить "ppa:bumblebee/stable", как через некоторое время пришло обновление. Вот скорее всего и выходит, что разница в версиях.
P.S. Более толково уже ответили.

Grayscale,
Интересные наблюдения. Но всё же относительно Bumblebee официальный nVidia Prime довольно примитивный и весьма неудобный. Но это не главное, так как на самом деле хорошо, что разработчики Ubuntu решились взяться за решение проблемы с двумя видеокартами и хочется верить, что в будущем у них всё получится. Ведь тогда всё будет работать хорошо "из коробки" и новичкам не придется сталкиваться с такими трудностями.   

Лично у меня nVidia Prime работает не очень хорошо. Он как бы работает, но попробовав хотя бы раз Bumblebee, уже есть с чем сравнивать и после этого использование Prime кажется неразумным. Однако всё зависит от железа.

Вот у меня почему-то на Ubuntu 14.04 и 14.10 так, что после переключения с nVidia на Intel без перезагрузки системы обратно на nVidia уже не вернуться. А еще при активной nVidia неприятно мигает интерфейс и дергается вся анимация системы, но игры, требующие дискретную видеокарту, через Wine запускаются.   

На Ubuntu 14.10 с активной nVidia миганий и артефактов куда меньше, но всё же почему-то с переключением карт проблема не исчезла.
Еще буквально позавчера на 14.10 после переключения видеокарт я перезагрузил систему и кроме заставки рабочего стола больше ничего не было. Но работал курсор мыши и можно было создать папку, войдя в которую открывалось голое окно Наутилуса. Пробовал через ctrl+alt+f1 переустановить драйвер nVidia и поставить Bumblebee, но безрезультатно. Странно, что гостевой режим загружался нормально. В итоге переустановил систему и сразу установил Bumblebee, который работает намного стабильнее.   


   

Оффлайн Grayscale

  • Активист
  • *
  • Сообщений: 573
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2634 : 27 Октября 2014, 22:23:41 »
Nick Prefesto,
Цитировать
Но всё же относительно Bumblebee официальный nVidia Prime довольно примитивный и весьма неудобный.
Как я с вами согласен, от prime на стену лезу, жутко неудобно, куча телодвижений лишних.
Как писал ранее, еще на бету 14.10 ставил бамблби, и столкнулся с проблемой, что несмотря на то, что включалась дискретная карта, вывод как будто был через встроенную, ибо производительности вообще никакой в играх не было. Как после релиза там дела - я не знаю, пока нет времени проверять, да и желания, опять себе геморрой зарабатывать....
В мире столько разнообразной фигни.. И в каждой найдется специалист
ASUS K46CB(S46CB) i7-3537U @ 2.0GHz 8Gb RAM + SSD 64 Gb + Manjaro Linux

Оффлайн larsik

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2635 : 13 Ноября 2014, 08:13:54 »
Ребята, у меня интегрированная карточка intel 4000, и дискретная NVidia gt740m. Строит Ubuntu 14.04.
Поставил bumblebee, но прироста никакого нет. glxspheres с vblank_mode=0 выдает одинаковые значения, что для интегрированной, что для optirun/primusrun/optirun -b primus
lspci
Цитировать
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 3D controller: NVIDIA Corporation GK107M [GeForce GT 740M] (rev ff)
dmesg
Цитировать
[ 1509.469241] bbswitch: enabling discrete graphics
[ 1509.903400] [drm] Initialized nvidia-drm 0.0.0 20130102 for 0000:01:00.0 on minor 1
[ 1509.903405] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  331.38  Wed Jan  8 19:32:30 PST 2014
[ 1509.926821] vgaarb: this pci device is not a vga device
[ 1509.927258] nvidia 0000:01:00.0: irq 47 for MSI/MSI-X
[ 1509.934833] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20131115/nsarguments-95)
[ 1509.934871] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20131115/nsarguments-95)
[ 1509.934912] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20131115/nsarguments-95)
[ 1509.934930] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20131115/nsarguments-95)
[ 1509.934948] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20131115/nsarguments-95)
[ 1509.934965] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20131115/nsarguments-95)
[ 1509.935004] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20131115/nsarguments-95)
[ 1509.935022] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20131115/nsarguments-95)
[ 1510.345799] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20131115/nsarguments-95)
[ 1510.762141] vgaarb: this pci device is not a vga device
[ 1512.668100] [drm] Module unloaded
[ 1512.670606] bbswitch: disabling discrete graphics
[ 1512.670623] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20131115/nsarguments-95)
[ 1512.684511] pci 0000:01:00.0: Refused to change power state, currently in D0
Я подозреваю что все дело в vgaarb. Как это исправить?

Оффлайн ustal47

  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2636 : 13 Ноября 2014, 14:33:26 »
Очередная тема по "ОПТИМУСУ" ;D
Цитировать
Свой путь победы над bumblebee в ubuntu 14.04.1 описал в ветке nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2592 : 05 Сентябрь 2014, 21:15:08 ».
З.Ы. Для справки, установлена ubuntu 14.04.1 (unity) с ядром 3.16.1-031601-lowlatency, платформа: x86_64
З.З.Ы. После установки и проверки работоспособности репы: (repository ppa:xorg-edgers/ppa)
надо отключить.

Оффлайн larsik

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2637 : 13 Ноября 2014, 18:47:08 »
Очередная тема по "ОПТИМУСУ" ;D
Цитировать
Свой путь победы над bumblebee в ubuntu 14.04.1 описал в ветке nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2592 : 05 Сентябрь 2014, 21:15:08 ».
З.Ы. Для справки, установлена ubuntu 14.04.1 (unity) с ядром 3.16.1-031601-lowlatency, платформа: x86_64
З.З.Ы. После установки и проверки работоспособности репы: (repository ppa:xorg-edgers/ppa)
надо отключить.
Дело в том, что glxgears не является тестом производительности. Он у меня тоже больше показывает, но толку 0. у тебя в dmesg что около vgaarb написано?

Оффлайн ustal47

  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2638 : 13 Ноября 2014, 21:20:50 »
Дело в том, что glxgears не является тестом производительности. Он у меня тоже больше показывает, но толку 0. у тебя в dmesg что около vgaarb написано?
есть разница: выхлопа dmesg   и  optirun dmesg а вообще-то я glxgears  верю, в том что он показывает именно работу видеокарты при демонстрации на экране простенькой мультяшки (шестерёнки).


Оффлайн larsik

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: nVidia Optimus (Гибридная графика nVidia + Intel) [Wiki] v2.0
« Ответ #2639 : 14 Ноября 2014, 08:00:39 »
Дело в том, что glxgears не является тестом производительности. Он у меня тоже больше показывает, но толку 0. у тебя в dmesg что около vgaarb написано?
есть разница: выхлопа dmesg   и  optirun dmesg а вообще-то я glxgears  верю, в том что он показывает именно работу видеокарты при демонстрации на экране простенькой мультяшки (шестерёнки).


Ты так и не ответил в том, что же у тебя в dmesg написано?)

 

Страница сгенерирована за 0.022 секунд. Запросов: 21.