LINUX.ORG.RU

Сообщения vertexua

 

Оценка потребления памяти

Каждый из нас может запустить локально htop и он покажет RSS, VSS и остальные метрики, ни одна из которых не скажет конкретно сколько памяти потребляет Хром. Но если закрыть Хром, то free покажет большее число чем раньше и вот именно это один из лучших показателей который у нас есть, учитывая чрезвычайно сложную архитектуру памяти Linux.

Есть две идеи как написать более полезный софт для оценки потребления памяти, чем htop.

Сначала каким-то образом, пусть хоть регексами по именам процессов разбить все процессы на группы, например родительский процесс и дочерные процессы Chrome или Firefox будут считаться группами «Chrome»/«Firefox». По определенным правилам выделить процессы DE, например «Gnome», «KDE» и так далее.

Потом есть два способа оценки потребления памяти со своими недостатками.

1) Просто показывать сумму по группе от rssanon в /proc/<pid>/status всех процессов и считать что именно этот показатель будет доминировать в больших приложениях. Придется игнорировать shared memory, data, code, что в принципе нормально для оценки. Главное что rssanon исключает rssfile, который не критичен и эти страницы легко будут сброшены в сам файл назад. Конечно для некоторых групп можно включать в сумму другие показатели, но в редких случаях.

2) Смотреть исключительно на суммарную занятую память на уровне всей системы и на количество процессов в группах на протяжении времени. После достаточного времени сборки статистики к этим данным можно примерить что-то вроде линейной регрессии или подобный метод. Мы получим среднюю по больнице стоимость процесса внутри группы. Плюсом этого подхода есть то, что мы не ввязываемся в выбор что мерять на уровне процесса, а оцениваем эффект на суммарное потребление. Например это будет хорошо работать для браузеров, выделяющих по процессу на вкладку и это количество часто меняется во время использования. Это даже будет работать для групп с одним процессом, который запущен или нет, например «Music Player». Недостатком есть то, что группы, в которых количество процессов неизменно со старта системы скорее всего будут отнесены к коэффициенту-константе. Конечно можно обозвать это группой «Система» и забыть, но тогда мы скорее всего смешаем Init System + X + DE.

Что скажете? Идея сыровата, но может быть может развита. Посоветуйте что и как можно к этом добавить, у кого какие идеи.

 , ,

vertexua
()

Пропуск интерактивного логина в десктопного пользователя если ты дома

Интересная идея появилась, я вроде бы о таком в обычных десктопных системах на основе Linux не слышал.

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

Пример - мой телефон находится в той же сети WiFi.

Есть ли протоколы, которые можно было бы покопать, где продуманы нюансы с безопасностью? Даже если не реализовано для Linux, мог бы написать PAM модуль на коленке.

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

Способ просто вставлять и вытягивать U2F в систему мне известен, но хотелось бы что-то что не требует никаких явных действий

 , ,

vertexua
()

Подскажите книку о современном Linux

Вот есть всем известная Pirate Book

https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/

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

Пишут ли современные книги где описывается современный Linux. Например чтобы много внимания уделялось подсистеме cgroups, настройками изоляции и безопасности, подсистемы systemd. Чтобы описывались дистрибутивы для контенеризированого софта - CoreOS, Atomic Host, Clear Linux. Всякие системы обьединения этого в кластера.

Причем меня не интересует мануал по Docker/Kubernetes. Пишут ли книги вроде Pirate Book о всем про все, но сейчас?

 , ,

vertexua
()

Вы доверяете сервисам хранения паролей?

Chrome Autofill, Firefox Sync, KeePass, LastPass? Что-то от Microsoft? Даже с лучшими намерениями самих сервисом, они как минимум могут быть взломаны.

Я знаю все практики - двухфакторная авторизация (кто-то за счет нее ставит password как пароль), сложные случайные пароли и т.д. Но хотелось бы узнать кто что делает, почему? Доверяете ли вы одним из сервисов выше, но не другим из того же списка? Доверяете ли вы им для хранения номеров карточек (учитывая распространение Visa3D Secure)?

 ,

vertexua
()

Кто-то пользовался rkt?

Вместо docker например. Какие истории успеха и неуспеха? Что стоит знать?

https://coreos.com/rkt/

 , rkt,

vertexua
()

Архиерейский собор - филиал gnu.org

http://www.patriarchia.ru/db/text/2775107.html

Статья 2013го, но я уверен что мало кто это видел. Это еще не просто статья, а как бы официальная позиция церкви

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

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

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

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

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

Надо спросить, рекомендует ли Архиерейский собор пользоваться Tor и I2P

 , , , ,

vertexua
()

Rust приложение раздуло в 20 раз при запуске в Kubernetes/CoreOS

Написал два Hello World вебприложения. Одно на Go - самое простое, другое на Rust - на Iron Framework. Оба возвращают одно и то же на любой HTTP запрос.

Запускаю оба сервера в docker.

Go жрет 4 МБ, Rust - 7 MB памяти. Rust по идее должен быть более экономным, но в данном случае в Go используется стандартный сервер, а в Rust - сторонний фреймворк. В любом случае разница - мелочь.

Запускаю все в Kubernetes, тоже в docker. Rust раздувает до 130 МБ (RSS), в Go ничего не поменялось. Думаю, ну наверное Go - статический бинарь без libc, а Rust - зависит на glibc. Ведь дейсвительно, Go запускается в образе Busybox, а Rust - в Ubuntu. Memory sharing показывает малый и там и там, и даже на локалке. Даже если запустить 3 процесса с Rust - все жрут 130 MB. Rust бинарь собирал в Gentoo, запускал на Ubuntu. Оно запороло какую-то оптимизацию?

И тут я сделал третий эксперимент. Я сделал такой-же сервер на Python. Он благополучно выжрал 13 MB в Kubernetes. D 10 раз меньше Rust

Я смотрю Rust готов к продакшну по полной программе. У меня руки не доходят его собрать с Musl, посмотреть.

Идеи, предложения? Ведь Rust таки жрал 7 MB на локальном докере в Gentoo. Почему так раздуло с Ubuntu libc на ядре CoreOS, причем только его одного?

Update: Пересобрал в статический бинарь с Musl и засунул в голый Busybox образ в котором даже каталогов /lib и /usr/lib нету. Локально стало меньше жрать, жрет 1.5MB. В Kubernetes - 130MB все равно.

Solved: Rust cоздавал 64 потока, потому что у него количество потоков - num_cpu * 8. На локальной тачке тоже, но непонятно почему локально не использовалось так много памяти

Solved2: man overcommit

 , , , ,

vertexua
()

Десктопный дистр работающий в памяти

Делал ли кто-то такой дистр, чтобы он работал полностью в памяти. Речь не о банальном запуске read-only образа диска в read-write tmpfs, а о том, чтобы все работало из памяти, но когда речь заходит о обновлении, то обновление устанавливалось на диск и на лету обновляло копии соответствующих файлов в памяти. Таким образом при перезагрузке обновления остаются. Плюс пользователь всегда может редактировать файлы на диске напрямую через какую-то специальную точку монтирования, например /disk. Можно было бы все изменения ФС в памяти асинхронно повторять на диске, но не все файлы в этом нуждаются и как раз суть работы в памяти и заключается в том, чтобы меньше дергать диск, причем не только для чтения, но и для записи.

/home при этом может быть на физическом диске, HDD или SSD.

Среди недостатков вижу необходимость вычитывания достаточно большого количества данных в память при загрузке системы, причем желательно не лениво, иначе будем наблюдать мягкие тормоза по мере раскачки системы. Плюс возможно это все слишком радикально и обьектино таких же параметров быстродействия можно добиться выборочной настройкой кеширования ФС, каким-то read-ahead в определенных точках монтирования.

Жду обьяснение почему не нужно как принято в рунете, вместо предложение по улучшению как принятно не в рунете

 ,

vertexua
()

Почему «application/приложение»?

Почему нельзя просто программа или что-то еще получше придумать. Этот срам тащится с венды еще

 ,

vertexua
()

Зачем нужны биткоины в физических магазинах?

Иногда вижу что в этих европках от магазинов электроники до кафе где берут биткоины. Это конечно славно, но нужно ли это?

Известны два сценария использования биткоинов

- анонимная покупка нелегальных товаров

- перевод денег между государствами без комиссий и контроля

Зачем покупать через биткоины телефон или кофе?

 

vertexua
()

Какие сейчас hype в IT?

Ну че там, Scala, Node уже отмучались?

Как поживает контейнерная виртуализация?

Что еще сейчас воспевают как панацею от всех проблем на всех IT конференциях?

Справочный материал по ссылке

 , ,

vertexua
()

История успеха

Gentoo, pf-sources, i3wm, 8 GB RAM

Включаем 4GB ZRAM Swap с 8 потоков к блочному устройству и потом...

  • Virtual Box с Ubuntu 4GB RAM (выделяется лениво)
  • Chrome и в нем
  • GMail
  • Google Drive+Music+Sheets+Docs
  • YouTube стрим 3 раза
  • Facebook
  • Bigpicture.Ru
  • Twitter
  • Firefox и в нем
  • Facebook
  • YouTube стрим
  • GMail
  • Steam
  • Counter Strike Global Offensive
  • парочку флеш игр
  • jconsole (гуй на жабе)
  • vim+ycm

Все работает

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           7.7G        7.0G        101M        270M        680M        407M
Swap:          4.0G        885M        3.1G
$ sudo zramctl
Password: 
NAME       ALGORITHM DISKSIZE   DATA  COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lz4             4G 762.3M 242.3M  254M       8 [SWAP]

Вот такие дела. Тем временем ЛОР обсуждает нехватку памяти

 ,

vertexua
()

Кто-то ставил Neverware?

http://www.neverware.com

Как полет? Все заработало?

 , ,

vertexua
()

Почему поутих срач Qt vs Gtk+?

Хотя вроде никто не победил и пропорции использования не поменялись, кроме маргинальных перепрыжек нескольких приложений.

Вот еще пища для размышлений

Какие тулкиты установлены у вас в системе?

Просела землюшка.

 , ,

vertexua
()

Принимаю поздравления. 1 зеленая звезда после 5 платиновых

Господа, после 5 планиновых с опусканием в 30ки скора у меня опять зеленая.

Принимаю поздравления

 

vertexua
()

IoC в С++

.. не Dependency Injection, а именно Inversion of Control я смотрю в плюсах не популярен. В мире Java без этого тебя сначала засмеют, а потом когда поймут что ты не унимаешься - то изобьют.

Что я подразумеваю под IoC

  • Есть контейнер, в которым по определенным ключам (типы, строки) регистрируются классы
  • Контейнер обязан уметь создавать инстансы каждого из классов, если надо подставляя ему или в конструктор или как-то по другому его зависимости
  • Группы регистраций классов можно обьединять в модули, которые просто устанавливаются подключением к основном контейнеру. Они тогда предоставлют или требуют другие класса для своей работы. По сути как паззл.
  • В тестах можно заменять целы модули указывая «запусти мне весь контейнер, но пожалуйста замени MyClass на MyMockClass»

Пример на псевдокоде который вроде бы как С++

class IB {
public:
  int value() = 0;
};

class B : public IB {
public:
   int value() {
      return 1;
   }
};

class A {
   A(std::shared_ptr<IB> b) : b_(b) {}

   int value() {
     return b_->value();
   }
private:
   std::shared_ptr<IB> b_;
};

void MyModule(Container& c) {
 c.RegisterAs<IB, B>(CREATE(
   B()
 ));

 c.Register<A>(CREATE(
   A(INJECT(IB))
 ));
}

int main() {
 Container c;
 MyModule(c);
 std::cout << c.Get<A>()->value() << std::endl;
 return 0;
}

Вместо shared_ptr может вполне быть unique_ptr и B будет не синглтоном внутри контейнера, а будет создаваться отдельно для каждого класса-пользователя. Слово синглтон перестает быть пугающим, потому что это не глобальный синглтон, а синглтон в одном контейнере, плюс легко тестируется и нету проблем с неправильной инициализацией.

В тесте запросто выполняется MyModule, а потом регистрация IB меняется на MockB.

Примеры существующих фреймворков

https://github.com/google/fruit

https://github.com/ybainier/Hypodermic

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

 ,

vertexua
()

Не было печали, но...

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

У меня почти полностью stable. Если не будет автоматически срабатывать и будет задавать вопросы, буду показывать нотификации на панели

 ,

vertexua
()

Контекстуальный $PS1

Кто-то знает как в баше сделать интеллектуальный prompt.

Например в одних случаях я хочу видеть каталог. Но например если я вошел в терминале в опеределенный каталог, то $PS1 форматируется по другому.

Нашел https://github.com/nojhan/liquidprompt, но не хочу ставить на рабочий комп что-то с гитхаба, потому если не найду как сделать попроще самому, то просто почитаю код сабжа

Слышали о таком?

 ,

vertexua
()

Google изменила логотип и множество других элеметов дизайна

Это первое изменение внешнего вида брендинга компании на последние несколько лет.

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

Видео

Перемещено Pinkbyte из google

 , ,

vertexua
()

C++: implicit instantiation of undefined template

Вот такой код

https://gist.github.com/anonymous/59178dd70424666f492d

Вот такая ошибка

https://gist.github.com/anonymous/135f9da09e1fe3e11490

clang++, C++11, куда копать? Не могу понять что тут теоретически может не хватать компилятору если ему все типы нормально определили

P.S. Забыл добавить в gist заголовочные файлы

#include <iostream>
#include <vector>
#include <memory>
#include <string>
#include <functional>
#include <mutex>
#include <thread>
#include <future>
#include <deque>
#include <vector>
#include <condition_variable>

 

vertexua
()

RSS подписка на новые темы