Pull to refresh

Brain Fuck Scheduler — ставим за 5 минут

Reading time 3 min
Views 11K
Configuring Linux *
О новом планировщике задач для Linux на Хабре уже написали вот тут. Весьма эпатажный «трейлер» с xkcd к новому планировщику, и не менее веселый FAQ, пробудили интерес. Расспросил знакомых, кто ставил, чтобы поделились впечатлениями — никто не ставил, ибо «влом ядро новое ставить» или «я подожду, пока оно в мейнстриме появится». Поставил и попробовал сам, и для тех кто хочет сделать то же самое — краткое руководство для Ubuntu 9.04, с описанием потенциальных граблей.

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

Итак, дабы не быть голословным, приступим. Предполагается, что у вас установлена Ubuntu 9.04 (Jaunty).

Читать дальше →
Total votes 64: ↑58 and ↓6 +52
Comments 120

Может ли простой пользователь участвовать в разработке ядра Linux? Зачем это нужно и к чему приводит

Reading time 13 min
Views 6.6K
Configuring Linux *
Не так давно на Хабре был опубликован топик — Brain Fuck Scheduler — ставим за 5 минут Речь шла об установке альтернативного планировщика в ядро Linux, на примере Ubuntu. Автор планировщика — Con Kolivas, какое-то время был довольно известным разработчиком патчей для ядра. Но потом прекратил свою деятельность. Мне стало интересно узнать, что за человек скрывается за этим именем. Оказалось, что Коливас, по своей основной работе не программист, а анестезиолог. Это еще больше подхлестнуло любопытство. В итоге была найдена статья с его интервью, правда двухлетней давности, в котором он касается вопросов не только ядра, но и развитии компьютерной отрасли в целом. Статья показалась мне настолько интересной, что захотелось ее перевести. Кое что я сокращал, но думаю, что суть изложил верно.
Оригинал — тут

Перевод — под катом

Читать дальше →
Total votes 102: ↑97 and ↓5 +92
Comments 110

Конструктор для печатной формы .NET планировщика

Reading time 5 min
Views 12K
Developer Soft corporate blog .NET *
Создано множество компонентов для .NET, реализующих функциональность календаря и планировщика (органайзера). Их задача — предоставить пользователю возможности, сходные с теми, которые он получает при использовании конечных приложений Outlook Calendar, Apple iCal, Windows Calendar, интернет-календарей Google Calendar и им подобных. Важное место среди этих возможностей занимает печать. Функционал печати у компонентов должен быть не хуже, чем у специализированных приложений, но при этом предоставлять большую гибкость в настройках.

Читать дальше →
Total votes 32: ↑24 and ↓8 +16
Comments 13

loop_dance — фоновый планировщик быстрого развертывания

Reading time 2 min
Views 1.3K
Ruby on Rails *
В последнее время в проектах часто приходится создавать демона, который периодически фоном что-то проверяет или отсылает.

Обычно подобную задачу решают с помощью таких пакетов как whevenever, daemon_controller, daemon_generator и т.д. и все казалось бы просто и понятно, но надоело каждый раз городить огород и писать одно и тоже. Мне нужно всего-лишь чтобы раз в час выполнялось какое-нибудь User.notify_all

Презентую loop_dance — gem для быстрого развертывания управляемого демона в рельсовом окружении.
Читать дальше →
Total votes 32: ↑31 and ↓1 +30
Comments 21

Выполнение кода по расписанию в Spring Framework

Reading time 2 min
Views 28K
Java *
Тут приспичило мне периодически запускать некоторый код в небольшом проектике написанном на Spring Framework. Я уж было приготовился по старой памяти (еще со спринга 2.x) к долгому прикручиванию quartz-а и написании кучи конфигов на xml, как оказалось все значительно проще
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Comments 16

Горутины: всё, что вы хотели знать, но боялись спросить

Reading time 3 min
Views 61K
Go *
В этой статье я постараюсь кратко и емко рассказать что такое горутины, когда стоит их использовать, какое отношение они имеют к системным потокам, а так же как работает планировщик.

Что за горутины?

Горутина (goroutine) — это функция, выполняющаяся конкурентно с другими горутинами в том же адресном пространстве.

Запустить горутину очень просто:
go normalFunc(args...)

Функция normalFunc(args...) начнет выполняться асинхронно с вызвавшим ее кодом.

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

Сколько вешать в граммах?

Чтобы было проще ориентироваться, рассмотрим цифры полученные опытным путем.
Читать дальше →
Total votes 14: ↑11 and ↓3 +8
Comments 15

Дайджест новостей платформы Windows Azure, декабрь-январь

Reading time 10 min
Views 4.2K
Microsoft corporate blog Microsoft Azure *
image

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

В этом выпуске:

  • Существенное снижение цен на хранилище данных Windows Azure;
  • Доступность новых экземпляров виртуальных машин для нагруженных вычислений c сетью InfiniBand;
  • Публичная доступность сервиса Hyper-V Recovery Manager;
  • Web Sites. Cтейджинг-окружение. Новый функционал Web Jobs. Функция AlwaysOn;
  • Mobile Services. Интеграция с SenchaTouch. Поддержка package.json. Поддержка startup-скриптов;
  • Windows Azure Scheduler. Интеграция с панелью администрирования;
  • Windows Azure Storage. Доступ на чтение к копии хранилища. Новая версия эмулятора. Библиотеки для С++ и Java;
  • Мониторинг. Новые функции службы мониторинга;
  • Платформа Windows Azure сертифицирована на соответствие PCI DSS;
  • А так же: новая библиотека для PHP, отчет Gartner, видео докладов Cloud OS Summit.

Предыдущие выпуски этого дайджеста можно найти в любой момент по следующей ссылке.
Читать дальше →
Total votes 33: ↑23 and ↓10 +13
Comments 5

Нестандартное использование сервиса мониторинга сайтов

Reading time 2 min
Views 13K
ХостТрекер corporate blog Information Security *
Нередки ситуации, когда изобретатель чешет затылок, осознав, каким образом используют его творение и сравнивая это с тем, что было задумано изначально. Сегодня речь пойдет о нетрадиционном использовании сервиса мониторинга. Какую еще пользу можно извлечь из функционала, предназначенного для проверки сайтов? Ответ ограничен лишь фантазией наших клиентов.

Один клиент настроил мониторинг… домашнего водопроводного насоса.


Читать дальше →
Total votes 15: ↑12 and ↓3 +9
Comments 4

Веб-аналог Crona

Reading time 2 min
Views 2.2K
ХостТрекер corporate blog
Что делать, если возникает потребность в регулярном выполнении определенных задач (чистка базы, бэкап, синхронизация и т.д.), а прав на установку ПО или же времени в нем разбираться, нет? ХостТрекер предлагает онлайн-планировщик задач, который с минимальными усилиями с вашей стороны поможет сделать вашу работу.

Читать дальше →
Total votes 15: ↑4 and ↓11 -7
Comments 8

Сравнение .NET календарей. Опыт первого знакомства

Reading time 10 min
Views 15K
Website development *.NET *C# *
Онлайн-планировщики хороши тем, что позволяют получить доступ к вашему календарю с любого устройства. При этом не стоит беспокоиться о сохранности данных в случае проблем с компьютером или смартфоном или о синхронизации расписаний между устройствами. Однако, количество инструментов, предназначенных для создания таких планировщиков может вызвать недоумение. Существуют JavaScript календари, .NET календари. Календари могут быть сторонними плагинами для популярных фреймворков или одним из компонентов этих фрейморков. Доступны также и stand-alone календари с возможностью интеграции с другими продуктами. Задача этой статьи — рассмотреть четыре разных .NET компоненты с целью помочь выяснить, на какой из них стоит обратить внимание и какой лучше подходит для пользователей разного уровня.

image

Вот список претендентов на сегодня:

— DayPilot ASP.NET Event Calendar
— DHTMLX Scheduler .NET
— Devexpress ASP.NET Scheduler
— Telerik .NET Scheduler

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

Итак, приступим.
Читать дальше →
Total votes 19: ↑19 and ↓0 +19
Comments 4

HDD посвящается: усмиряем приложение, прожорливое на дисковое время

Reading time 3 min
Views 35K
Configuring Linux **nix *

Корень всех зол


Долгое время у меня была проблема — система очень сильно тормозила после старта. У меня ноутбук с жёстким диском (HDD) и Ubuntu 14.04.
Как выяснилось, причина крылась в одной лишь программе — демоне Dropbox. Dropbox — это онлайновое файловое хранилище, а его демон — программка, синхронизирующая файлы, расположенные в определённой папке, с онлайн-хранилищем. На старте демон начинает считывать свой кэш. У меня он занимает не одну сотню мегабайт, а удалять его вручную не стоит — есть вероятность потерять данные. Учитывая, что у меня жёсткий диск — устройство с механическими частями — демон начинал потреблять время доступа к нему настолько, что пользоваться компьютером и запускать приложения становилось малореально, пока он не прогрузится. Убрать его из автозапуска и запускать вручную? Неприятное решение, у меня и так есть вещи, которые я на старте вынужден запускать сам (например, iotop, он без прав суперпользователя не запускается). Нужно было найти способ сделать приложение менее прожорливым именно на диск.
Читать дальше →
Total votes 33: ↑29 and ↓4 +25
Comments 47

Work-stealing планировщик в Go

Reading time 4 min
Views 17K
Go *
Translation

Задача планировщика в Go — распределять запущенные горутины между потоками ОС, которые могут исполняться одним или большим количеством процессоров. В многопоточных вычислениях, возникли две парадигмы в планировании: делиться задачами (work sharing) и красть задачи (work stealing).


  • Work-sharing: Когда процессор генерирует новые потоки, он пытается мигрировать их на другие процессоры, в надежде, что они попадут к простаивающему или недостаточно нагруженному процессору.
  • Work-stealing: Недостаточно нагруженный процессор активно ищет потоки других процессоров и "крадет" некоторые из них.

Миграция потоков происходит реже при work stealing подходе, чем при work sharing. Когда все процессоры заняты, потоки не мигрируют. Как только появляется простаивающий процессор, рассматривается вариант миграции.


В Go начиная с версии 1.1 планировщик реализован по схеме work stealing и был написан Дмитрием Вьюковым. Эта статья подробно объясняет устройство work stealing планировщиков и как он устроен в Go.

Читать дальше →
Total votes 24: ↑20 and ↓4 +16
Comments 8

Spring Boot. Фоновые задачи и не только

Reading time 10 min
Views 33K
PostgreSQL *Java *
Sandbox

Введение


В данном туториале я хочу привести пример приложения для отправки email-ов юзерам, основываясь на дате их рождения(например с поздравлениями), используя аннотацию Scheduled. Я решил привести данный пример, т к по моему мнению он включает в себя довольно многие вещи, такие как работа с базой данных(в нашем случает это PostgreSQL), Spring Data JPA, новый java 8 time api, email-сервис, создание фоновых задач и небольшую бизнес-логику при этом оставаясь компактным. Сегодня интернет пестрит огромным множеством туториалов которые обычно сводятся к тому как наследоваться от CrudRepository, JpaRepository и тд. Туториал расчитан на то, что вы уже смотрели хотя бы некоторые из них и имеете представление о том, что такое Spring Boot. Я же постараюсь показать пример приложения, которое более обширно показывает его возможности и как с ним работать.

Создание проекта


Идем на Spring Initializr.

Добавляем зависимости:

1. PosgreSQL — в качестве базы данных
2. JPA — доступ к базе
3. Lombok — для удобства и избавления от бойлерплейт кода(не придётся писать геттеры, сеттеры и тд самим), подробнее тут
4. Mail — собственно для работы и отправки email-ов, оф. документация

Указываем группу и артефакт, к примеру com.application и task. Скачиваем и распаковываем проект, затем открываем его в среде разработки, у меня это Intellij IDEA.

База данных


Теперь устанавливаем себе PostgreSQL. Далее создаём базу данных с юзером и паролем. Можно сделать это прямо из IDEA, во вкладке database, можно с помощью командной строки если у вас линукс, следующими командами:

sudo -u postgres createuser <username>
sudo -u postgres createdb <dbname>
$ sudo -u postgres psql
psql=# alter user <username> with encrypted password '<password>';
psql=# grant all privileges on database <dbname> to <username> ;

Также на windows это можно сделать с помощью pgAdmin или его альтернатив.
Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Comments 68

Рецепты PostgreSQL: планировщик асинхронных задач

Reading time 3 min
Views 7.7K
PostgreSQL *
Tutorial
Для приготовления планировщика асинхронных задач нам понадобится сам postgres и его расширение pg_task. (Я дал ссылки на свой форк postgres, т.к. делал некоторые изменения, которые пока не удалось пропихнуть в оригинальный репозиторий. Можно также воспользоваться готовым образом.)
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 14

Создание дополнительного kube-scheduler’a с кастомным набором правил планирования

Reading time 14 min
Views 3.2K
Nixys corporate blog System administration *Server Administration *DevOps *Kubernetes *


Kube-scheduler является неотъемлемым компонентом Kubernetes, который отвечает за планирование подов по нодам в соответствии с заданными политиками. Зачастую, в процессе эксплуатации Kubernetes-кластера нам не приходится задумываться о том, по каким именно политикам происходит планирование подов, так как набор политик дефолтного kube-scheduler’a подходит для большинства повседневных задач. Однако встречаются ситуации, когда нам важно тонко управлять процессом распределения подов, и для выполнения этой задачи есть два пути:

Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Comments 2

Система отложенного исполнения на RabbitMQ

Reading time 5 min
Views 8.5K
Домклик corporate blog Instant Messaging *Python *Programming *System Analysis and Design *

Всем привет!

Меня зовут Никита, и я курирую разработку нескольких проектов в ДомКлик. Сегодня я хочу продолжить тему «веселых картинок» в мире RabbitMQ. В своей статье Алексей Казаков рассматривал такой мощный инструмент, как отложенные очереди, и разные реализации стратегии Retry. А сегодня мы поговорим, как использовать RabbitMQ для планирования периодических задач.
Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Comments 4

Schedulers в RxJS

Reading time 4 min
Views 9.9K
Website development *JavaScript *Angular *ReactJS *TypeScript *

Что вы знаете о Schedulers в RxJS? Они скрывают от разработчиков работу с контекстом выполнения Observable. Как те эльфы-домовики из Гарри Поттера, которые выполняют всю черную работу в Хогвартсе, а о них никто даже и не слышал. Давайте исправим это и узнаем о них чуть больше.

Читать далее
Total votes 5: ↑5 and ↓0 +5
Comments 12

Оркестратор бесконечных задач

Reading time 17 min
Views 10K
System Analysis and Design *.NET *C# *Distributed systems *
Sandbox

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

В большинстве случаев вся enterprise разработка сводится к выполнению одних и тех же требований: создается заявка, в зависимости от типа заявки у нее есть какой-то жизненный цикл, по завершению жизни заявки мы получаем (…или не получаем) желаемое. Под заявкой мы можем подразумевать все что угодно, начиная с покупки в интернет-магазине товара, денежного перевода или расчета траектории баллистической ракеты. У каждой заявки есть свой жизненный путь и что важно отметить - время жизни, и чем меньше это время, тем лучше. Иными словами, чем быстрее мой банковский перевод осуществится, тем лучше. Требования тоже схожи, побольше RPC operations per second, поменьше Latency, система должна быть отказоустойчивой, масштабируемой и должна быть готова вчера. Есть миллион инструментов, сотни баз данных, различные подходы и паттерны. И все уже давно написано, нам остается лишь правильно использовать готовые технологии в наших проектах. 

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

Читать далее
Total votes 15: ↑15 and ↓0 +15
Comments 8