Может одновременно загружаться в оперативную память компьютера

Обновлено: 07.07.2024

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

Проблема в том, что у вас недостаточно памяти: если у вас 16 ГБ ОЗУ, вы не сможете загрузить файл размером 100 ГБ. В какой-то момент у операционной системы закончится память, она не сможет ее выделить, и ваша программа перестанет работать.

Что вы можете сделать? Вы можете развернуть кластер больших данных — все, что вам нужно сделать, это:

  • Получить кластер компьютеров.
  • Потратьте неделю на настройку.
  • Во многих случаях необходимо изучить совершенно новый API и переписать весь свой код.

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

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

В этой статье я расскажу:

  • Зачем вообще нужна оперативная память.
  • Самый простой способ обработать данные, которые не помещаются в памяти, — потратить немного денег.
  • Три основных программных метода обработки слишком больших объемов данных: сжатие, разбиение на фрагменты и индексирование.

Последующие статьи покажут вам, как применять эти методы к определенным библиотекам, таким как NumPy и Pandas.

Зачем вообще нужна оперативная память?

Прежде чем мы перейдем к обсуждению решений, давайте проясним, почему проблема вообще существует. Память вашего компьютера (ОЗУ) позволяет вам читать и записывать данные, как и ваш жесткий диск — так зачем вашему компьютеру вообще нужна ОЗУ? Диск дешевле ОЗУ, поэтому он обычно может вместить все ваши данные, так почему бы вашему коду просто не ограничиться чтением и записью с диска?

Теоретически это может сработать. Однако даже более современные и быстрые твердотельные жесткие диски (SSD) намного медленнее оперативной памяти:

  • Чтение с твердотельных накопителей: ~16 000 наносекунд.
  • Чтение из ОЗУ: ~100 наносекунд

Если вам нужны быстрые вычисления, данные должны помещаться в ОЗУ, иначе ваш код может работать в 150 раз медленнее.

Решение 💰: больше оперативной памяти

Самое простое решение проблемы нехватки оперативной памяти — выбросить деньги на решение проблемы. Вы можете либо купить компьютер, либо арендовать виртуальную машину (ВМ) в облаке с гораздо большим объемом памяти, чем у большинства ноутбуков. В ноябре 2019 года с минимальным поиском и очень небольшим сравнением цен я обнаружил, что вы можете:

  • Купите Thinkpad M720 Tower с 6 ядрами и 64 ГБ ОЗУ за 1074 доллара США.
  • Арендуйте виртуальную машину в облаке с 64 ядрами и 432 ГБ ОЗУ за 3,62 доллара США в час.

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

Если, потратив немного денег на оборудование, ваши данные поместятся в ОЗУ, часто это самое дешевое решение: в конце концов, ваше время стоит довольно дорого. Однако иногда этого недостаточно.

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

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

Сжатие означает использование другого представления данных, при котором используется меньше памяти. Существует две формы сжатия:

  • Без потерь. Данные, которые вы сохраняете, содержат ту же информацию, что и исходные данные.
  • Потери: данные, которые вы сохраняете, теряют некоторые детали исходных данных, но таким образом, что в идеале это не сильно влияет на результаты ваших вычислений.

Для ясности: я не говорю о файлах ZIP или gzip, поскольку они обычно предполагают сжатие на диске. Чтобы обработать данные из ZIP-файла, вы обычно распаковываете его как часть загрузки файлов в память. Так что это не поможет.

Что вам нужно, так это сжатие представления в памяти.

Например, предположим, что ваши данные имеют два значения и всегда будут иметь только эти два значения: "ДОСТУПНО" и "НЕДОСТУПНО" . Вместо того, чтобы хранить их в виде строки с ~ 10 или более байтами на запись, вы можете сохранить их как логическое значение, True или False , которое вы можете сохранить в 1 байте. Вы можете даже сократить представление до одного бита, необходимого для представления логического значения, что сократит использование памяти еще в 8 раз.

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

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

Но поскольку в нашем случае книга не помещается в памяти, вместо этого вы можете загружать книгу постранично:

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

Вы можете узнать больше о фрагментировании в Pandas и о форматах хранения NumPy, которые делают возможным фрагментирование.

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

Вы можете решить этот вариант использования с помощью фрагментации: загружать все данные каждый раз и просто отфильтровывать данные, которые вам не нужны. Но это медленно, так как вам нужно загрузить много нерелевантных данных.

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

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

Или вы можете перейти в конец книги, где находится указатель книги, и найти запись для "Aardvarks". Он может предложить вам прочитать страницы 7, 19 и 120-123. Так что теперь вы можете читать эти страницы, и только эти страницы, что намного быстрее.

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

Простейший метод индексации

Самый простой и наиболее распространенный способ реализации индексации — это присвоение файлам имен в каталоге:

Если вам нужны данные за март 2019 года, просто загрузите файл 2019-Mar.csv – нет необходимости загружать данные за февраль, июль или любой другой месяц.

Вы можете узнать больше об индексировании в Pandas, а также о некоторых оптимизациях при загрузке индексированных данных из базы данных SQL.

Следующие шаги: применение этих методов

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

Эти методы используются во многих различных программных пакетах и ​​инструментах. Даже системы больших данных построены на этих методах: например, использование нескольких компьютеров для обработки фрагментов данных.

В последующих статьях я покажу вам, как применять эти методы с конкретными библиотеками и инструментами: NumPy, Pandas и даже ZIP-файлами. Если вы хотите читать эти статьи по мере их выхода, подпишитесь на мою рассылку в форме ниже.

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

Тратить время и деньги на процессы, использующие слишком много памяти?

Ваш пакетный процесс Python использует слишком много памяти, и вы понятия не имеете, какая часть вашего кода отвечает за это.

Вам нужен инструмент, который точно подскажет, на чем следует сосредоточить усилия по оптимизации, инструмент, разработанный для специалистов по обработке и анализу данных. Узнайте, чем может помочь профилировщик памяти Fil.

Как вы обрабатываете большие наборы данных с ограниченным объемом памяти?

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

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

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

Почему так важна компьютерная память (ОЗУ)?

Оперативная память компьютера (ОЗУ) — один из наиболее важных компонентов, определяющих производительность вашей системы. Оперативная память дает приложениям место для хранения данных и доступа к ним на краткосрочной основе. В нем хранится информация, которую ваш компьютер активно использует, чтобы к ней можно было быстро получить доступ.

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

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

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

Что такое скорость и задержка ОЗУ?

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

Что делает ОЗУ (память)?

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

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

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

Что использует оперативную память?

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

Нужно ли вам обновить оперативную память?

Являетесь ли вы геймером, дизайнером или просто хотите ускорить свой персональный компьютер, увеличение объема оперативной памяти — это простой и легкий способ повысить производительность вашей системы. Чтобы определить правильный тип памяти для вашего компьютера, используйте Crucial® Advisor™ или System Scanner. Эти инструменты помогут вам определить, какие модули памяти совместимы с вашим компьютером, а также выбрать параметры, соответствующие вашим требованиям к скорости и бюджету.

© Micron Technology, Inc., 2017. Все права защищены. Информация, продукты и/или технические характеристики могут быть изменены без предварительного уведомления. Ни Crucial, ни Micron Technology, Inc. не несут ответственности за упущения или ошибки в типографике или фотографии. Micron, логотип Micron, Crucial и логотип Crucial являются товарными знаками или зарегистрированными товарными знаками Micron Technology, Inc. Все другие товарные знаки и знаки обслуживания являются собственностью соответствующих владельцев.

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

На протяжении многих лет операционные системы, такие как Windows, программное обеспечение, такое как Photoshop, а теперь и веб-браузеры, такие как Chrome, заслужили репутацию беззастенчивых пожирателей памяти. Тем временем старые ПК часто имеют от 2 ГБ до 4 ГБ памяти. Загрузка слишком большого количества вкладок в Chrome или открытие большого количества программ на рабочем столе может израсходовать всю память, которую может предложить ваша система, что замедлит работу вашей системы.

Если ваш компьютер плохо себя чувствует, когда у вас много работы, рассмотрите возможность увеличения оперативной памяти. Всего 4 ГБ может подойти, если вы занимаетесь легкими задачами и не используете Chrome, но 8 ГБ – это действительно тот минимум, который мы рекомендуем для современного настольного ПК, а 16 ГБ – это оптимальный вариант для большинства людей. его скромное увеличение цены с 8 ГБ.Геймеры, стремящиеся к будущему, могут даже подумать о 32 ГБ — недостатком, конечно, является повышенная стоимость. (Вот как узнать, какая у вас сейчас оперативная память.)

Соображения по покупке оперативной памяти

Существуют разные типы оперативной памяти. В большинстве современных ПК используется память DDR4, но для более старых систем может потребоваться память DDR3 или даже DDR2. Ожидается, что комплекты DDR5 с высокой пропускной способностью дебютируют вместе с грядущими процессорами Intel Alder Lake 12-го поколения, но они будут очень дорогими, и процессоры по-прежнему будут поддерживать старый стандарт. На данный момент правит память DDR4.

Упоминается в этой статье

Настольная память Corsair Vengeance RGB Pro 16 ГБ (2 x 8 ГБ) DDR4 3200 МГц

Corsair Vengeance RGB Pro 16 ГБ (2x8 ГБ) DDR4 3200 МГц Память для настольных ПК

Важно также учитывать скорость приобретаемой оперативной памяти, а не только емкость комплекта памяти. Из всех тестов пропускной способности памяти, проведенных за последнее десятилетие, единственное, что эти тесты постоянно показывали, это то, что покупка самой быстрой оперативной памяти дает очень мало пользы. Большинству людей следует не обращать внимания на роскошные комплекты с частотой 5000 МГц и сосредоточиться на оптимальном соотношении цена/производительность: DDR4 с тактовой частотой от 2666 до 3600 МГц. Если есть возможность, выберите комплект оперативной памяти, состоящий из двух модулей, а не одномодульных или четырехканальных модулей.

Следующий вопрос, который необходимо рассмотреть, – бренд. Доступно множество брендов памяти, таких как Corsair, G.Skill, Kingston, KLEVV, Patriot, ADATA, Crucial, PNY, Super Talent, Mushkin и другие. Самая большая разница между этими брендами заключается в конструкции радиаторов на модулях оперативной памяти. Выберите память, у которой есть лучший компромисс между внешним видом, который вам нравится, и ценой, которую вы можете себе позволить. Вы столкнетесь с постоянными спорами о надежности различных брендов, но в целом все известные производители оперативной памяти предлагают очень надежные продукты.

Как установить оперативную память на свой компьютер

После того, как разобрались с покупкой и доставили 16 ГБ оперативной памяти DDR4 прямо к вашему порогу, пришло время установить новую оперативную память. Это быстрая и довольно безболезненная задача — при условии, что вы выполнили всю домашнюю работу.

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

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

Большинство современных компьютеров имеют примерно 32 или 64 мегабайта ОЗУ, доступного для использования ЦП (подробности об ОЗУ см. в разделе «Как работает ОЗУ»). К сожалению, этого объема ОЗУ недостаточно для одновременного запуска всех программ, которые большинство пользователей ожидают запустить.

Например, если вы загружаете в оперативную память операционную систему, программу электронной почты, веб-браузер и текстовый процессор одновременно, 32 МБ недостаточно для их хранения. Если бы не было такой вещи, как виртуальная память, то, как только вы заполнили бы доступную оперативную память, ваш компьютер должен был бы сказать: «Извините, вы не можете больше загружать приложения. Пожалуйста, закройте другое приложение, чтобы загрузить новое». При использовании виртуальной памяти компьютер может искать в оперативной памяти области, которые в последнее время не использовались, и копировать их на жесткий диск. Это освобождает место в оперативной памяти для загрузки нового приложения.

Поскольку это копирование происходит автоматически, вы даже не знаете, что это происходит, и это заставляет ваш компьютер чувствовать, что у него неограниченный объем ОЗУ, хотя на нем установлено всего 32 мегабайта. Поскольку место на жестком диске намного дешевле, чем чипы оперативной памяти, это также дает хорошую экономическую выгоду.

Скорость чтения/записи жесткого диска намного ниже, чем у ОЗУ, а технология жесткого диска не предназначена для доступа к небольшим фрагментам данных за раз. Если вашей системе приходится слишком сильно полагаться на виртуальную память, вы заметите значительное падение производительности. Ключ в том, чтобы иметь достаточно оперативной памяти для одновременной обработки всего, над чем вы обычно работаете, — тогда единственный раз, когда вы «чувствуете» медлительность виртуальной памяти, — это небольшая пауза, когда вы меняете задачи. В этом случае виртуальная память идеальна.

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

Область жесткого диска, в которой хранится образ ОЗУ, называется файлом подкачки. Он хранит страницы оперативной памяти на жестком диске, а операционная система перемещает данные туда и обратно между файлом подкачки и оперативной памятью. На компьютере с Windows файлы подкачки имеют расширение .SWP.

Далее мы рассмотрим, как настроить виртуальную память на компьютере.

Настройка виртуальной памяти

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

Для этого откройте окно «Панель управления» и дважды щелкните значок «Система». Откроется системное диалоговое окно. Перейдите на вкладку "Производительность", а затем нажмите кнопку "Виртуальная память".

Нажмите на вариант с надписью "Позвольте мне указать собственные параметры виртуальной памяти". Это сделает опции ниже этого утверждения активными. Щелкните раскрывающийся список рядом с «Жесткий диск:», чтобы выбрать жесткий диск, для которого вы хотите настроить виртуальную память. Помните, что хорошим практическим правилом является равномерное распределение виртуальной памяти между имеющимися у вас физическими жесткими дисками.

В поле "Минимум:" введите наименьший объем пространства на жестком диске, который вы хотите использовать для виртуальной памяти на указанном жестком диске. Суммы указаны в мегабайтах. Для диска «C:» не менее 2 мегабайт. Цифра «Максимум:» может быть какой угодно, но один из возможных верхних пределов — удвоенный размер физического ОЗУ. По умолчанию Windows обычно на 12 мегабайт превышает объем физической оперативной памяти вашего компьютера. Чтобы новые настройки вступили в силу, закройте диалоговое окно и перезагрузите компьютер.

Объем места на жестком диске, который вы выделяете для виртуальной памяти, важен. Если вы выделите слишком мало, вы получите ошибки «Недостаточно памяти». Если вы обнаружите, что вам нужно продолжать увеличивать размер виртуальной памяти, вы, вероятно, также обнаружите, что ваша система работает медленно и постоянно обращается к жесткому диску. В этом случае вам следует подумать о покупке большего количества оперативной памяти, чтобы сохранить соотношение между оперативной и виртуальной памятью примерно 2: 1. Некоторым приложениям нравится иметь много места в виртуальной памяти, но они редко обращаются к нему. В этом случае хорошо подходят большие файлы подкачки.

Одна хитрость, которая может повысить производительность виртуальной памяти (особенно когда требуются большие объемы виртуальной памяти), заключается в том, чтобы сделать минимальный и максимальный размеры файла виртуальной памяти одинаковыми. Это заставляет операционную систему выделять весь файл подкачки при запуске машины. Это предотвращает рост файла подкачки во время работы программ, что повышает производительность. Многие видеоприложения рекомендуют этот метод, чтобы избежать пауз при чтении или записи видеоинформации между жестким диском и лентой.

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

Эта статья является одной из серии статей, посвященных компьютерной памяти, в том числе:

Читайте также: