Как стать автором
Обновить

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

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

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

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

Читать дальше →
Всего голосов 64: ↑58 и ↓6 +52
Комментарии 120

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

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

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

Читать дальше →
Всего голосов 102: ↑97 и ↓5 +92
Комментарии 110

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

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

Читать дальше →
Всего голосов 32: ↑24 и ↓8 +16
Комментарии 13

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Время на прочтение 10 мин
Количество просмотров 4.2K
Блог компании Microsoft 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.

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

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

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

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


Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Комментарии 4

Веб-аналог Crona

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

Читать дальше →
Всего голосов 15: ↑4 и ↓11 -7
Комментарии 8

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

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

image

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

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

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

Итак, приступим.
Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 4

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

Время на прочтение 3 мин
Количество просмотров 35K
Настройка Linux **nix *

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


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

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

Время на прочтение 4 мин
Количество просмотров 17K
Go *
Перевод

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


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

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


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

Читать дальше →
Всего голосов 24: ↑20 и ↓4 +16
Комментарии 8

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

Время на прочтение 10 мин
Количество просмотров 34K
PostgreSQL *Java *
Из песочницы

Введение


В данном туториале я хочу привести пример приложения для отправки 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 или его альтернатив.
Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Комментарии 68

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

Время на прочтение 3 мин
Количество просмотров 8K
PostgreSQL *
Туториал
Для приготовления планировщика асинхронных задач нам понадобится сам postgres и его расширение pg_task. (Я дал ссылки на свой форк postgres, т.к. делал некоторые изменения, которые пока не удалось пропихнуть в оригинальный репозиторий. Можно также воспользоваться готовым образом.)
Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 14

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

Время на прочтение 14 мин
Количество просмотров 3.4K
Блог компании Nixys Системное администрирование *Серверное администрирование *DevOps *Kubernetes *


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

Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 2

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

Время на прочтение 5 мин
Количество просмотров 8.7K
Блог компании Домклик Мессенджеры *Python *Программирование *Анализ и проектирование систем *

Всем привет!

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

Schedulers в RxJS

Время на прочтение 4 мин
Количество просмотров 10K
Разработка веб-сайтов *JavaScript *Angular *ReactJS *TypeScript *

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

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 12

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

Время на прочтение 17 мин
Количество просмотров 11K
Анализ и проектирование систем *.NET *C# *Распределённые системы *
Из песочницы

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

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

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

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 8