q3d

Как ускорить Lightroom

Sep 21, 2010 00:27

В продолжение темы ускорения софта, предназначенного для обработки фотографии, хочу поговорить об ускорении RAW-конвертера Adobe Photoshop Lightroom. Ранее я опубликовал заметку об ускорении Photoshop CS5. В случае с ускорением Lightroom ситуация во-многом общая. Текста много, всё под катом.

Работа в Lightroom состоит из следующих фаз:

(1) Импорт фотографий с флешки или HDD-фотобанка на диск компьютера
(2) Отбраковка и разнос по коллекциям фотографий с целью облегчения дальнейшего их поиска
(3) Пост-процессинг снимков с целью улучшения их качества, устранения и компенсации ошибок съёмки
(4) Экспорт снимков в формате TIFF или JPEG, предназначенном для неких нужд (дальнейшего пост-процессинга, публикации, передачи заказчику)

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

Фаза (1) - Импорт

Первая половина фазы (1) - копирование данных с внешнего носителя, вторая - создание (если это не отключено) превьюшек стандартного либо полного размера. При копировании критическим местом (для быстрых флешек) является производительность картовода. Например, карта памяти CF Sandisk Extreme Pro может отдавать данные на скорости до 90 мегабайт в секунду, в то время как даже лучший USB-картовод не способен обеспечить скорость копирования свыше примерно 35 мегабайт в секунду, ибо ограничен интерфейсом. Использование более быстрых картоводов с иным интерфейсом может значительно ускорить процесс. Производительность дисковой подсистемы компьютера мало влияет на результат, если копирование идёт с более медленного носителя. Современные жёсткие диски записывают данные на скорости свыше 100 мегабайт в секунду. Однако, если импорт кадров идёт с быстрого внешнего HDD (скажем, eSATA), внутренний диск компьютера может оказаться медленее.

В дальнейшем RAW-исходники будут читаться с того носителя, на который их скопировал Lightroom. Поэтому, я не рекомендую импортировать снимки с внешнего USB-HDD или HDD-фотобанка методом "Add". При дальнейшей работе это может изрядно затормозить процесс. Итак, при первой фазе на производительность импорта влияет, в основном, только скорость картовода. И только затем начинается настоящий workload.

Во второй половине фазы (1) Lightroom производит первичный рендеринг всех скопированных кадров в свою базу данных, чтобы вы могли на основе этих рендеров произвести отбраковку. При этом в базу записывается снимок в разрешение Standard (задаётся в настройках), который может быть 1024/1440/1680/2048 пикселей по длинной стороне кадра. Либо, вы можете сказать Lightroom производить рендеринг превьюшек размера 1:1 (для 16-мегапиксельного снимка это будет 4896x3264 пикселей). Эта процедура столь же ресурсоёмка, как полноценный рендеринг обработанных кадров. Даже очень многоядерные процессоры в этой фазе загружаются работой по полной.

Ускорить время рендера предварительных изображений можно, указав меньший размер превьюшки. Тогда и база меньше места займёт, и скорее процесс закончится, и быстрее к отбраковке перейти можно. Если же перейти к отбраковке до того, как Lightroom создаст миниатюры, процесс будет выглядеть так - "читаем RAW с диска -> рендерим -> показываем". На фоне происходящего параллельно рендера миниатюр это может отнимать у компьютера все ресурсы. Даже мой 8-ядерный десктоп такая задача ставит почти на колени.

Но, есть у миниатюр-превьюшек свой недостаток. Если вы производите отбраковку не только по миниатюрам, но ещё и зумите в процессе отбраковки картинку, для сравнения мелких деталей, Lightroom зашьёт ваш ПК, потому что процесс будет выглядеть так: "читаем превью с диска -> показываем -> [зум] -> читаем RAW с диска -> рендерим -> показываем -> сохраняем превью 1:1 в базу". Во избежание таких временных потерь есть смысл дать Lightroom задание сразу делать превьюшки 1:1 - навигация по превьюшкам в каталоге останется столь же быстрой, места на диске уйдёт немного, но зум при отбраковке станет почти "бесплатным".

Поскольку вторая процедура весьма ресурсоёмка, и фактически идентична полноценному рендеру, ускорить её можно путём замены процессора, добавлением оперативной памяти, заменой жёсткого диска на более производительный, на RAID-массив или SSD.

Если же у вас уже очень мощный компьютер (типа Mac Pro с двумя процессорами, или даже десктоп на последних многоядерных Core i7), много памяти, быстрые диски и т.д., можно ускорить весь процесс импорта, распараллелив операции. Скажем, вы вставляете флешку с фотографиями за два дня. Запускаете импорт и говорите Lightroom перенести в базу на диске только фото за первый день. Когда Lightroom приступает к рендеру превьюшек, вновь запускаете диалоговое окно Import и даёте ему задание начать перенос снимков второго дня. Получается ускорение из-за того, что в один и тот же момент Lightroom производит рендер превьюшек (загружены: процессор, оперативная память, диск на чтение), и копирование новых RAW (загружен интерфейс USB, диск на запись).

Кстати, в целом на современном компьютере это и есть способ эффективного улучшения нагрузки на компьютер - давать Lightroom сразу две или более задачи.

Вывод по фазе (1): ускорить Ligtroom в фазе импорта можно а) покупкой быстрого картовода б) распараллеливанием процесса импорта.

Фаза (2) - отбраковка, работа с каталогом

Софтверную фазу (2) я обсуждать буду не во всех аспектах, в рамках этой статьи. У меня речь идёт больше об аппаратной начинке компьютера и её сбалансированности, нежели о софт-приёмах. Рекомендую почитать об ускорении Lightroom в этом ключе у юзера necronom. Я имею ввиду тегирование, быстрый поиск, оптимизацию базы данных Lightroom. Об этом у necronom написано достаточно. Мы же поговорим вновь об аппаратных ресурсах.

Первостепенно нужно помнить, что при первой установке Lightroom предлагает сохранять свою базу изменений снимков в папке User/My Pictures. От этого категорически нужно отказаться - выброс неимоверной кучи файлов и подпапок в папку My Pictures это самый действенный вариант замедлить компьютер, его загрузку, старт Windows. Подчеркну, страдает даже не Lightroom, а именно весь компьютер - это папка попадает под антивирусные проверки, её контент индексирует и пытается забивать в кэш система поиска Windows Vista и Windows 7. Наконец, её индексируют всякие iTunes в поисках снимков для переноса на iPhone/iPad.

Теперь переходим к самой отбраковке. В ходе этого процесса вы выбираете снимки, листаете их, сравниваете. Всё это время Lightroom качает в память и выгружает из неё большое количество превьюшек. Скажем, я обычно отбраковывая снимки так - иду курсорными кнопками по отснятому, на понравившемся нажимаю английскую B. Снимок попадает в Quick Collection. Далее всем снимкам Quick Collection я присваиваю одну звезду. Снимки без "звездного статуса" идут все вместе в полное удаление с диска. Соответственно, для меня критично, чтобы снимки листались быстро.

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

Но (!) на скорость здесь влияет не столько линейное чтение, сколько время доступа. Скажем, если взять RAID0-массив и SSD-диск с одинаковой скоростью чтения в 200 мегабайт в секунду, на SSD с его крошечным временем доступа Lightroom будет летать, а на RAID0 с его задержками, тормозить сильнее, чем на одиночном жёстком диске. Простой пример - у меня БД Lightroom в настоящий момент занимает 98,8 гигабайт. В папке, куда складываются превьюшки, XMP-файлы и другая служебная информация (не RAW) находится 107055 файлов в 90781 каталоге. Когда всё это лежало на RAID-массиве, на тупой подсчёт места, занимаемого всей этой папкой на диске, уходило порядка 10 (!) минут. На SSD эта процедура занимает, дай бог, секунд пятнадцать.

Объясняется все просто - RAID имеет огромную пропускную способность но дикое время доступа. В папке сотни тысяч файлов. Просто пошариться между ними, найти нужный, занимает очень много времени у дисковой подсистемы. Если бы речь шла о копировании одного большого файла, или даже копировании сотни RAW-файлов, RAID0 был бы на уровне SSD. Но много мелких файлов, непрерывные оперции ввода-вывода выкашивают систему.

Вывод по фазе (2): быстрый диск (в идеале SSD или RAM-диск) - лучшее место для хранения базы данных Lightroom. Не стоит БД с библиотекой RAW-файлов, то есть местом, где вы храните исходники фотографий. Они вообще должны быть на разных дисках. В идеале.

Фаза (3)  - пост-процессинг снимков

В третьей фазе Lightroom используется для изменения параметров снимка, в том числе: баланса белого, яркости, насыщенности, чёрной и белой точек, тонирования, зональной и точечной обработки. Все эти операции производятся не над превьюшкой, а над RAW-файлом. Но модификации, насколько мне удалось выяснить, подвергается не целиковый многомегапиксельный файл (это было бы жутко ресурсоёмко), а своего рода mini-RAW, имеющий разрешение экрана, производная от полного RAW. Это легче всего заметить при полном зуме. Берёте снимок и перетаскиваете. Если бы происходил рендер всего кадра, то появившееся из-за краёв экрана изображение было бы уже зашумодавленнным, со всеми настройками. А оно почти эталонное, и только когда вы отпускаете мышку, происходит рендер и подгрузка.

В процессе полностью задействован центральный процессор, оперативная память. Для подгрузки RAW используется дисковая подсистема (во время самого процесса, до операции Sync или Copy/Paste настроек, минимально, т.к. более одного кадра за раз вы не обрабатываете). Ускорить здесь Lightroom можно неожиданным образом - уменьшив разрешение экрана.

Скажем, при прочих равных, на 30-дюймовом мониторе с разрешением 2560x1680 субъективный пост-процессинг будет занимать больше ресурсов, чем на мониторе с разрешением 1280x800, просто потому, что mini-RAW на экране занимает меньше пикселей экрана. То есть Чтобы лучше понимать - скажем, когда вы сдвигаете полозок баланса белого на одно деление, движок RAW-конвертера полностью с нуля перерендеривает mini-RAW. Он заново, с нуля, производит коррекцию яркости, контраста, шумодава, виньетирование и все остальные настройки.

Анализируя ускорение Lightroom, я специально наблюдал за загрузкой ядер процессора и загрузкой оперативной памяти в процессе работы в интерфейсе. Так на 4-ядерном процессоре простой сдвиг полозка баланса белого на одно деление рывком подбрасывал загрузку всех четырёх ядер до 70%, с почти нуля. На двухпроцессорной восьмиядерной системе скроллинг по стопроцентному зуму и кроп с поворотом приводил к подскоку загрузки одного из восьми ядер до 100%, остальных семи примерно до 15-20%, с совокупной загрузкой системы до 41 процента. А это немало, согласитесь.

Аналогичным образом системе загружается при всех остальных операциях - при зональной обработке, например если вы давите пыль или дефекты кожи лица инструментом Spot Removal Tool. При кропе, поворотах картинки, шарпенинге, шумодаве и т.д.

Чтобы ускорить эту фазу обработки и сделать работу в интерфейсе более гладкой и плавной, лучше всего поменять процессор на более быстрый. Движок Lightroom отлично умеет использовать все ядра доступных процессоров (хоть два, хоть двенадцать). Если вас сильно напрягает медлительность системы и нет возможности обзавестись более быстрым процессором, есть смысл подумать об отказе от использования второго монитора либо о мониторе с меньшим разрешением. На худой конец (очень не советую) изменить в меньшую сторону разрешение имеющегося экрана.

А что с видеокартами? Да ничего. Ligtroom не использует ресурсы видеокарт так, как многие ожидают. Он не передаёт рендер RAW-файла и масштабирование JPEG процессору видеокарты, он даже не оперирует со слоями так, как это делает Photoshop. Поэтому да, хорошая быстрая видеокарта для LR, особенно в двухмониторной конфигурации, это нужная вещь, но о каком-то преимуществе топовой двухчиповой модели или SLI-спарки над каким-нибудь Radeon 5770 речи не идёт в принципе.

Фаза (4) - экспорт

Фаза 4 наиболее ресурсоёмка. В этот момент Lightroom работает так: сначала читает полноразмерный RAW с диска, затем производит над ним манипуляции в памяти, после этого выводит результирующий снимок в заданном формате для записи на диск. Ещё LR может в процессе масштабировать кадры, добавлять "шарп на размер". То есть у нас начинается всё с интенсивных дисковых операций чтения (RAW-файлы на 16 мегапикселей занимают около 20 мегабайт, около 25 мегабайт для 21 мегапикселя, свыше 50 мегабайт у среднеформатных камер на 30 мегапикселей и т.д.). Затем производятся мощные вычисления в оперативной памяти процессором. Затем опять дисковые операции на запись.

В зависимости от ситуации, баланс может меняться. Скажем, если вы экспортируете в JPEG, снижается объём записываемых на диск данных - файлы на 16 мегапикселей занимают мегабайт по пять-десять. Если же экспорт идёт в TIFF, каждый записанный кадр может занимать уже по 100 мегабайт, в том же разрешении.

Для ускорения Lightroom здесь критично разнести дисковые операции по разным накопителям. У меня библиотека RAW-файлов лежит на одном диске, база данных LR с информацией о внесённых изменениях на другом, рендер результата производится на третий. Таким образом я не заставляю один и тот же диск почти одновременно производить операции чтения и записи.

Что касается загрузки процессора, то на 8-ядерной системе простой экспорт загружает все ядра равномерно до 55%. Это оставляет мне место для запуска одновременно ещё 1-2 потоков экспорта. Скажем, если мне нужно отдать клиенту 900 снимков, три сотни из них я экспортирую первым потоком, ещё три другим, и последние три третьим. Тогда загрузка системы подскакивает до 80% и выше. На LR2 удавалось увидеть ситуацию загрузки системы до 100%. На менее многоядерной системе может происходить загрузка всех ядер до 100% даже на одном потоке экспорта.

Общий вывод по ускорению Lightroom

Внимательные читатели могли заметить, что выше я практически ничего не сказал об оперативной памяти. Скажем так, это ещё один весьма критичный фактор компьютера. На системе с 1-2 гигабайтами памяти (а так многие работают до сих пор) всё может упираться в дисковую подстему на всех фазах, просто потому, что LR не хватит физической оперативки и он будет агрессивно использовать виртуальную память компьютера. Особенно сильно это скажется на фазе отбраковки, очень сильно пострадает время экспорта снимков. Поэтому, я всегда рекомендую компьютеры для обработки фото оснащать 64-битными версиями Windows, Photoshop и LR, устанавливать в них как минимум 6 гигабайт памяти. Только это, без замены процессора и дисковой системы, даст ощутимый прирост как плавности работы в интерфейсе, так и скорости экспорта. А на компьютере с достаточной производительностью процессора и большим количеством памяти серьёзно ускорить процесс отбраковки помогает перенос базы данных LR на SSD-диск с его громадной скоростью чтения и чрезвычайно низким временем доступа.

Именно из всех озвученных выше соображений скажу сразу - нетбук это худшее, на чём можно оперировать LR. Для фотографа лучше подойдёт небольшой ноутбук на недорогом Core i3, если во главе стола стоит компактность техники.

советы, ускорение, софт, железо, фото, lightroom

Previous post Next post
Up