Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

А как же всё-таки работает многопоточность? Часть I: синхронизация

JavaСистемное программированиеПараллельное программирование
Tutorial
картинка для привлечения внимания(пост из серии «я склонировал себе исходники hotspot, давайте посмотрим на них вместе»)
Все, кто сталкивается с многопоточными проблемами (будь то производительность или непонятные гейзенбаги), неизбежно сталкиваются в процессе их решения с терминами вроде «inflation», «contention», «membar», «biased locking», «thread parking» и тому подобным. А вот все ли действительно знают, что за этими терминами скрывается? К сожалению, как показывает практика, не все.

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

Перед прочтением глубокого описания полезно убедиться в том, что вы в достаточной мере разбираетесь в Java Memory Model. Изучить её можно, например, по слайдам Сергея Walrus Куксенко или по моему раннему топику. Также отличным материалом является вот эта презентация, начиная со слайда #38.
Читать дальше. Много.
Всего голосов 130: ↑122 и ↓8 +114
Просмотры156.5K
Комментарии 21

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

Блог компании MicrosoftMicrosoft 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
Просмотры4.2K
Комментарии 5

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

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

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


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

Веб-аналог Crona

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

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

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

Разработка веб-сайтов.NETC#
Онлайн-планировщики хороши тем, что позволяют получить доступ к вашему календарю с любого устройства. При этом не стоит беспокоиться о сохранности данных в случае проблем с компьютером или смартфоном или о синхронизации расписаний между устройствами. Однако, количество инструментов, предназначенных для создания таких планировщиков может вызвать недоумение. Существуют 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
Просмотры14.2K
Комментарии 4

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

Настройка Linux*nix

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


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

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

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
Просмотры14.3K
Комментарии 8

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

PostgreSQLJava
Из песочницы

Введение


В данном туториале я хочу привести пример приложения для отправки 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
Просмотры25.8K
Комментарии 64

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

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

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

Блог компании NixysСистемное администрированиеСерверное администрированиеDevOpsKubernetes


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

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

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

Блог компании ДомКликМессенджерыPythonПрограммированиеАнализ и проектирование систем

Всем привет!

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

Schedulers в RxJS

Разработка веб-сайтовJavaScriptAngularReactJSTypeScript

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

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Просмотры4.1K
Комментарии 9

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

Анализ и проектирование систем.NETC#Распределённые системы
Из песочницы

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

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

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

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