Подключение файла подкачки (SWAP) в MAC OS X при использовании внешнего SSD-диска в качестве системного

Доброго времени суток, дорогие товарищи!

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

Как-то раз, мне пришлось призадуматься над одной небольшой задачкой. Есть компьютер iMac, есть успешно установленная OS X Sierra на внешний, подключенный через USB SSD-диск, и есть странное, удивительное, и при этом — полное, отсутствие файла подкачки.

Не буду здесь вдаваться в подробности мониторинга, определения, и подтверждения этого факта, чтобы не тратить драгоценное время читателей. В нашей, российской «пустыне», бессмысленно искать что-либо по этому поводу. Ибо на текущий момент — просто нет ничего вразумительного. Англоязычный сектор интернета при этом — также, не порадовал ничем существенным.

Время шло. Проблема стояла, как «немой укор». И вдруг, неожиданно, примерно в начале октября, вышло обновление OS X, которое называется «Mojave». Надежда, как говорится, умирает последней. Не один я «плакался» на просторах интернета, как бестолкова и инертна техподдержка Mac OS X. И, свой печальный опыт звонка «прямо туда», я решил более никогда не повторять в целях экономии собственного времени. Как и стОило ожидать, Mojave не только не исправила проблему с постоянным отваливанием после пробуждения из сна клавиатуры и мыши, но, также и ничего не решила с файлом подкачки или хотя бы добавлением возможностью управлением этой очень важной, на мой взгляд, функцией.

Вышло так, что мне пришлось делать копию больших, но при этом безобразно мелких данных, с удаленного сервера в свое локальное хранилище по протоколу SSH. Я использовал для этих целей достаточно известный продукт, который назыается Cyberduck. Все в нем хорошо и прекрасно. Кроме того, что при работе с большим количеством мелких файлов, он, вероятно, для контроля ошибок передачи, ведет свой собственный, временный лог, который, скорее всего, наращивается во временных файлах (или кэше системы) и, достигает размеров, сопоставимых с размерами загружаемых данных. Что разумеется, тут же отражается на производительности системы. И «живет» этот лог, при этом, не где-нибудь — а непосредственно в оперативной памяти. В моей системе оперативной памяти — 8 Гб. Но в работе с системой я вижу постоянно занятыми порядка 6-7 Гб. Некоторые люди в нашей «пустыне» об этом странном событии сообщают так: (прочитал где-то на форумах) "«Политика компании Apple такова: „Вы купили много оперативной памяти, и заплатили за это много денег. Так почему эта оперативная память не должна использоваться полностью“ ???» То есть, когда я оставил на ночь процесс копирования этих самых мелких данных, и пришел наутро посмотреть «а как оно там?», я сразу понял, что что-то — не так. После двух-трех движений мышью и клавиатурой система встала колом.

Уверен, что очень многих людей удивляет в принципе, как это вообще возможно — полная остановка OS X. Но когда не хватает оперативной памяти — очень даже. При этом, система до сих пор (!!!) никак не предупреждает пользователя, что у него проблемы со свободной оперативной памятью, и эти все дела, просто могут привести к полному краху.

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


конец преамбулы


После долгих мучений получилось наконец написать одной строкой команду монтирования того диска, который помечен OS X как несмонтированный, и как выделенный системой под нужды использования виртуальной памяти (VM).

Большей частью благодаря одному ответу на Тостере. И еще сотней прочитанных страниц форумов и блогов в интернете.

sudo diskutil mount -mountPoint /private/var/vm `diskutil ap list | grep VM | awk -F ' '  '/d/ {print $5}'`

Прошу обратить Ваше внимание на обратные кавычки ограничивающие собственно фильтр после сцепки нескольких команд, которые своим выводом просто определяют аргумент команды монтирования — именно то имя (номер) диска, который в наборе с другими, помечен как VM. В настоящий момент, то, что вижу я — это disk4s4. Но, когда к моноблоку подключен второй или еще и третий внешний диск — то имя диска помеченного как VM может быть запросто и таким: disk5s4, и таким: disk6s4. Еще один момент. Между простыми вертикальными кавычками во фрагменте «awk -F ' ' » — (сразу после буквы F две кавычки) — присутствует пробел. То есть, еще раз, — между одиночными кавычками после F — ПРОБЕЛ (!). Но, это, на всякий случай. Опытные бобры сразу же найдут выход их хаты. :-)

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

diskutil ap list

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

Если у кого-то со сходной проблемой — «не взлетает» — ну что же — давайте попробуем обсудить это…
==
UPD: строчка для AppleScript будет выглядеть так:
==
(do shell script «diskutil mount -mountPoint /private/var/vm `diskutil ap list | grep VM | awk -F ' ' '/d/ {print $5}'`» with administrator privileges) display dialog
==
Поделиться публикацией

Комментарии 11

    0
    есть успешно установленная OS X Sierra на внешний, подключенный через USB SSD-диск

    Разве USB не лишает преимущества SSD?
      0
      При 2.0 — да, но ведь уже 3.0/3.1 есть и прочие лайтнинги
        0

        USB 3 может до 5 Гб/с, SATA 1 — 1,5 Гб/с, SATA 2 — 3 Гб/с, SATA 3 — 6 Гб/с, так что скорости сравнимые. Версии USB 3.1 и USB 3.2 удваивают пропускную способность.


        На практике я специально не замерял, думаю, там всё упирается в конкретный контроллер, но внешний SSD подключенный по USB 3 работал ощутимо быстрее, чем внутренний HDD подключенный по SATA 2.

          0
          я проводил тестирование. тут главное коробочку правильную выбрать с поддержкой uasp.
          при заявленной скорости моего ssd 520мегабит на чтение запись, через коробочку подключенную через usb 3.0 получал скорость 430мегабит — 20 процентов потерь, конечно, не мало, но вполне приемлимо(при этом тестируемый диск в момент тестирования являлся системным-загрузочным, что, возможно тоже повлияло на результат). Другая проблема — это отсутсвие TRIM в макос для ssd подключенных через usb, не смотря на то что контроллер в коробочке это вроде как умеет. Согласно моему пониманию trim, такое положение вещей скорее всего приведет со временем к снижению скорости работы ssd на запись. Для борьбы с этой напастью, от своего ssd размером 500gb я откусил 100gb неразмеченной области — в моем понимании это должно нивелировать отсутствие trim.
          0
          На линейной скорость чтения/записи да, все преимущества стрираются, так как упираешься в лимиты USB.
          А вот на других сценариях, из-за высокой скорости доступа, SSD продолжает быть лучше, даже подключеный через USB.
          0
          rsync не пробовали?
            0
            rsync несомненно более удобная вещь, чем копирование с помощью «гуйной» софтинки какая бы прекрасная она не была. К счастью, задач ежедневного бэкапа неудобных (больших) данных лично у меня — мало. Кроме того, одна из давних попыток настройки руками rsync на двух разных версиях ОС, увы, не привела к успеху за короткий срок. rsync однозначно удобно, когда он скажем, предустановлен на сетевых хранилищах типа QNAP. Все остальное — только при наличие большого количества свободного времени.
            0
            Эээээээмммм…
            Давным давно в далекой галактике… В смысле, в рунете куча статей, как «Ускорение работы Mac OS X путем отключения Swap-файла» и тп.
            В конце есть команда как включить эти файлы назад:
            sudo launchctl load -wF /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

            И система сама все делает, без всяких автоматизаций.

            image
              0
              не, тут проблема не в том что сервис не запущен, а то что по каким-то причинам внешний ssd игнорируется для свопа. при выполнении вашей команды получаем сообщение что сервис уже запущен. а решение автора рабочее — своп начинает использоваться, мне помогло
                0
                Да, komarovdd, все верно. Я бы не тратил время, если бы решение лежало на поверхности. Поскольку подключенный диск SSD, — макось потому его (предусмотрительно) и игнорирует. Поскольку при активном использовании swap на SSD сильно сокращает его жизнь. И, если подумать, полная автоматизация в этом случае не только не нужна, но и вредна. Поэтому вариант использования Applescript с добавлением в автозапуск (Объекты вохода) — вполне достаточен. Есть необходимость в swap — подключаем. Нет — и не нужно. (строчку для Applescript добавлю в UPD)
                  0
                  тут я немного не согласен, все-таки если бы ssd был внутренним swap бы наверняка работал. мне кажется бояться свопа на ssd с современным твердотельниками уже не актуально. понятное дело что срок жизни сократиться, но в масштабах отведенного ресурса этим можно пренебречь в угоду скорости. единственно для внутреннего ssd бы полноценно работал бы trim, для ssd по usb в макос trim не работает

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

            Самое читаемое