惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
Malwarebytes
Malwarebytes
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
F
Future of Privacy Forum
C
Cisco Blogs
T
The Exploit Database - CXSecurity.com
A
Arctic Wolf
S
Securelist
K
Kaspersky official blog
S
Schneier on Security
T
ThreatConnect
T
Tenable Blog
Spread Privacy
Spread Privacy
T
True Tiger Recordings
AWS News Blog
AWS News Blog
F
Fox-IT International blog
量子位
T
Threatpost
V
Vulnerabilities – Threatpost
C
CERT Recently Published Vulnerability Notes
Cisco Talos Blog
Cisco Talos Blog
GbyAI
GbyAI
宝玉的分享
宝玉的分享
腾讯CDC
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
Cyberwarzone
Cyberwarzone
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
U
Unit 42
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
The Register - Security
The Register - Security
MyScale Blog
MyScale Blog
小众软件
小众软件
A
About on SuperTechFans
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
博客园 - 三生石上(FineUI控件)
美团技术团队
Google Online Security Blog
Google Online Security Blog
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog

Все публикации подряд на Хабре

Мессенджер HalChat теперь в Google Play: 3 года разработки, ИИ в браузере и квест с модерацией Реверс-инжиниринг Xiaomi Smart Band 10 Среда повседневности как объект проектирования: что общего у горца, серотониновой ямы и митохондрий AGENTS.md создавали, чтобы помогать агентам. Я использую его, чтобы их вычислять Почему устанавливают join_collapse_limit = 20 Почему устанавливают join_collapse_limit = 20 Эрик Рис, автор Lean Startup: Почему хорошие компании становятся плохими после IPO Context-driven Reusable Form Pattern: Масштабируемая архитектура для Create / Edit / Create-from-Source Пузырьковая сетка, кошачья стая и не только — неожиданные источники вдохновения для QoS-алгоритмов ___, или «Заголовок намеренно оставлен пустым» ИИ-боты сканируют даже логи TLS-сертификатов. Любая информация используется для обучения LLM Нейросеть оживить фото ИИ: Как оживить фото нейросетью в 2026 году? Разбираемся в ML без воды: от базы до Attention. Часть 5: Метрики качества В поисках «кофейного Грааля». Как человечество пытается сварить идеальный кофе и какие рецепты предлагают…математики Программатик: Часть 2 — OpenRTB Интернет до бесконечных лент: каким был 2010 год Перезапуск TrueIndex: что изменилось в рейтинге языков программирования Проектный холст: как менеджеру подбирать «краски» управления под разные команды «Метафизика в формулах: математическое ядро «Веры Паломника — Исход» Java и постквантовый TLS Marcli: Markdown Терминал Кнопочный смартфон с 5G за 2800 рублей — разбираем и изучаем китайскую диковинку Где неприятности — там и жизнь Разворачивайте платформы: stackfile Мой путь в Microsoft Мобильная разработка за неделю #631 (18 — 24 мая) Что не так с Mixtape, и почему не все довольны новой игрой? Стоматология каменного века. Как неандертальцы лечили зубы 59 тысяч лет назад Почему классическое управление проектами часто не работает в IT-продуктах Строительство Саркофага. Часть 2. Бетонные реки и стальные берега РАЗРАБОТКА ПАРАМЕТРИЗИРУЕМОГО МОДУЛЯ CORDIC-АЛГОРИТМА НА SYSTEM VERILOG Вариационное исчисление как метафора свободы выбора: от градиентного спуска к онтологии пути Ekahau Sidekick и RSSI‑offset: физические ограничения метода и пять независимых причин неточности клиентской модели Колесо потока против раскола Обзор интересных особенностей переворачивающихся при умножении чисел В С неопределённое поведение повсюду MCP-агрегатор: объединяем инструменты для LLM в один сервер Дата-центры в космосе: как Google и SpaceX готовят новую инфраструктуру для ИИ Google готовит замену Chromebook: какими будут ноутбуки Googlebook Пользователь пишет issue, агент меняет сайт. Да, я это сделал Корпоративные конфликты в ИТ-секторе: механика судебной защиты активов и субсидиарных рисков Цена одной опечатки: Как три неверные буквы сорвали киберограбление на миллиард долларов Как я победил спам в своих email аккаунтах Whitepaper Сбера «AI-Disrupt PDLC»: разбор для тех, кто пишет код RustDesk Pro в России не купить. После долгих лет администрирования мы собрали своё честное решение Не пики, а бассейны: почему эволюция — это блуждание по графу жизни Как Gemini 3.5 Flash сломали ради красивых графиков (и почему она обходит 3.1 Pro только на бумаге) Вредоносная атака на Laravel-Lang meta-attention is all you need Как перестать путаться в IP-адресах серверов Сколько стоят ошибки в арбитраже: декомпозиция ценообразования на судебные услуги в Москве Разбираемся в ML без воды: от базы до Attention. Часть 4: kNN Vortex: фреймворк для тех, кого задолбала итальянская кухня в репозитории Использование тепла ЦОД в мире и РФ Часть 4. Скорость света — технические детали Не цитируй мне нейросеть Что сейчас с Project Loom? Примеры и код Рождённые в Сумерках Meta 1 мая показала как они хранят ключи от ваших бэкапов WhatsApp. Разбираю архитектуру и сравниваю Линт проектов: собираем ESLint, Prettier и Stylelint в один пакет Reasoning-модели сломали мой промпт-инжиниринг. Год переучиваюсь РБМК: enfant terrible Как я собеседую менеджеров AI-продуктов для крупного Enterprise Парадокс рынка труда: конкуренция выросла, но не везде, нанимать легче, но не везде Модификаторы в Blender: осваиваем Boolean «Бесплатно» — это красный флаг: почему мы доверяем не тем (опрос) Стратегия выживания в эпоху ИИ Новая теория обещает переписать фундамент всей математики MTP у Qwen3.6 в llama.cpp обещает ×2 по скорости. Я прогнал ту же модель через своего агента — и получил обратное [Перевод] Соль и перец в безопасности паролей Что такое «статьи-зомби» CodeGraph: граф кода для Claude Code вместо grep по файлам. Разбираю архитектуру и проверяю бенчмарки Мессенджер Ласточка. Часть 3 Google представила Gemini Omni — универсальную ИИ-модель. Роботы работают, счастлив человек Что у SpaceX с патентным портфелем перед IPO? Делегирование, которому можно научиться у промпт‑инженеров Feature Based Clean Architecture. Часть 5: Масштабирование FBCA и теоретико-графовый анализ зависимостей Настройка типизации формы React Hook Form (≥ v7.44.0) + Zod с разными входными и выходными типами Feature Based Clean Architecture. Часть 4: FBCA: формализация границ ответственности в NestJS-модуле Корпорация «Святые Технологии». Работа мечты (рассказ) CyLab Security Academy: как Carnegie Mellon превратила CTF в полноценную обучающую платформу Feature Based Clean Architecture. Часть 3: Архитектурный риск циклов в NestJS: ROI решений на горизонте пяти лет Домашний сервер без белого IP: безопасная публикация сервисов через VPS, обратный SSH-туннель и Caddy Почему не взлетели дирижабли? Часть 22: Митягина, Эйхенвальд и Ховрина, первый в истории женский экипаж дирижабля Китайцы ответили на H200 — обзор Zhenwu M890 от Alibaba Feature Based Clean Architecture. Часть 2: Декомпозиция на сервисы: анализ ограниченности подхода Лучшие игры для Steam Deck в 2026 году по мнению пользователей Обход блокировок внутри iOS-приложения: VLESS + Reality через sing-box, и грабли по дороге [Перевод] Любой пользователь интернета может позвонить в вашу дверь Новый экспериментальный препарат для похудения обеспечил резкое снижение веса Хром и скорость Провалила вайтборд, но прошла тестовое — как я делала задание для Т-Банка Космическая линза помогла Уэббу увидеть древнейшую галактику Вселенной Почему custom URI schemes в Telegram Mini Apps ведут себя по-разному на Android, iOS и Desktop Как я сократил рутину QA до пары кликов: генератор API-тестов и тест-кейсов на LLM, которым хочу поделиться ИИ‑спасатель в кармане: как мы сделали агента для помощи при ЧС, который работает без интернета QNAME minimisation на практике: RFC 7816, реализация, грабли Агенты, роботы и мы: как ИИ перекраивает рынок труда в Европе От боли к npm install: TDLib для React-Native, или как я делал проект, а получилась библиотека Написание консольного симулятора баттл-арены на языке С++ с реализацией «умных» ботов
Когда памяти мало
JBFW · 2026-05-25 · via Все публикации подряд на Хабре

Пару недель назад или чуть больше попалась тут статья про то, как вернуть к работе старый компьютер.
Но то ли стиль изложения народу не понравился, то ли еще что - в общем, статью сняли с публикации, а автор явно обиделся. Я думал, он доработает и напишет еще - но что-то не написал.
А зря: были предложены вполне годные вещи, которые я попробовал, и увидел, что это хорошо весьма. Что ж, напишу сам, вдруг кому тоже пригодится.

Почему меня эта тема вообще заинтересовала: у меня, как уже писал раньше, сейчас такой весьма спартанский рабочий компьютер: перепрошитый под Debian TV-box, процессор ARM, питание всего 5 вольт от USB-зарядки.
Начиналось как прикольный эксперимент - а потом понравилось: не гудит, не шумит, электричества не жрёт, места почти не занимает, вопреки ожиданиям работает вполне неплохо.
Единственный минус - памяти всего 4 гигабайта, и увеличить ее физически нельзя.

Причем, для работы-то вполне достаточно, а вот браузер, зараза такая, любит покушать, точнее пожрать.
Не сам браузер - а некоторые сайты, чуть более чем полностью набитые всякими свистелками и анимацией (лучи радости создателям модных современных сайтов с многопоточными скриптами и HD-иконками, типа "img1920х1025.jpg style='width:100px'").
Соответственно, если запущены рабочие программы, и тут повезет открыть такой сайт - начинаются тормозааа, главное успеть его закрыть, пока всю память не выжрал.

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

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

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

Так вот, первое решение - можно разместить своп-файл в самой памяти.
Смысл в том, чтобы писать в него данные в сжатом виде: получается достаточно быстро, поскольку это всё в памяти, и в то же время память экономится, поскольку неактивные страницы сжимаются, и сжимаются неплохо (какой-нибудь огромный буфер под данные, забитый 0x00,0x00,...). Скинули в своп 100 мегабайт - заняли 50-40-10, остальное - свободно.
Называется это zram, и устанавливается примерно так:

apt install zram-tools

Настройки хранятся в /etc/default/zramswap:
ALGO - алгоритм сжатия, PERCENT или SIZE - сколько выделяем под своп, и PRIORITY - чтобы в первую очередь использовать именно этот своп, раньше, чем своп на диск.
Потом запускаем:

zramswap start

И вот оно: появился своп и место в памяти.
Если прописать это куда-нибудь в /etc/rc.local - будет запускаться при перезагрузке.

Можно запускать вручную - будет выглядеть примерно так:

zramctl -f --size 1024M -a lz4
/dev/zram1

mkswap /dev/zram1
swapon /dev/zram1
swapoff /dev/zram1

Разумеется, это не панацея, в конце концов сам своп тоже место занимает, и рано или поздно всё хорошее заканчивается, и памяти снова нет...
Но есть второй инструмент: динамический своп swapspace.

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

Установка:

apt install swapspace

Настройки - в /etc/swapspace.conf
Там указывается рабочий каталог, пороги срабатывания для создания и удаления файлов.
Запуск:

/etc/init.d/swapspace start

Я не использую systemd по ряду причин, поэтому вот так.
Можно просто вызвать команду из /etc/rc.local, можно создать скрипты:

update-rc.d swapspace defaults

Эта команда создает симлинки в каталогах /etc/rcX.d для автоматического запуска - всё, как и работало до systemd.

Ну и немного тюнинга:
Есть такие параметры ядра, vm.swappiness и vm.page-cluster.

Первый отвечает за то, насколько "злее" ОС будет пытаться сбросить страницы в своп: чем больше - тем злее, от 0 до 200.
С одной стороны, его надо бы поставить поменьше, чтобы реже лазить в медленный HDD, или реже портить записью SSD, с другой стороны - можно поставить побольше, чтобы активнее использовать компрессию zram.

Второй говорит о том, сколько страниц за раз (2^X) читать потом обратно из свопа.
С одной стороны - "оптом дешевле", т.е. быстрее, и можно поставить побольше, с другой стороны - зачем забивать дефицитную память лишним?

В общем, надо пробовать и смотреть что получается.
Пробуется это так:

sysctl vm.swappiness=60
sysctl vm.page-cluster=2

(не путать с systemctl!)
Чтобы сохранялось при перезагрузках - выбранный вариант прописать в /etc/sysctl.conf

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

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