Планировщик дел для linux

Органайзеры и заметки

Everpad

Everpad — клиент сервиса заметок Evernote для Linux. Позволяет искать, создавать и редактировать заметки (доступна не вся функциональность Evernote). Программа интегрируется в Unity.

Calibre

Calibre — менеджер электронных книг — удобное средство для управления электронными книгами.

MyNotex

MyNotex — бесплатная программа под Linux для создания и организации заметок — менеджер заметок. Позволяет организовать заметки в категории, осуществлять полноценный поиск по заметкам, расставлять теги и многое другое.

Indicator Stickynotes

Indicator Stickynotes — утилита для создания маленьких желтых заметок на рабочем столе.

CherryTree

CherryTree — программа для систематизации и ведения заметок под Linux. Многоуровневая структура, поддержка ссылок и тегов и другое.

GCstar

GCstar — бесплатная программа для Linux предназначенная для создания коллекций. Это менеджер коллекций.

Getting Things Gnome

Getting Things Gnome (GTG) — программа органайзер для ведения списка дел (задач). Позволяет создавать списки дел, размещать их в древовидную структуру (подзадачи).

Osmo — лёгкий персональный органайзер для Linux. Включает модули: календарь, контакты, задачи, заметки и адресную книгу.

Программа переведена на русский язык.

Evolution

Evolution — программа для Linux, которая обладает функциями органайзера. Имеет следующие возможности: управление электронной почтой (почтовый клиент), управление контактами, календарь, списки дел (To-Do листы), заметки, синхронизация с внешними устройствами и другие.

Источник

Принцип работы планировщика задач в Linux

Планирование – это процесс распределения ресурсов системы для выполнения задач. В статье мы рассмотрим его вариант, в котором ресурсом является одно или несколько ядер процессора, а задачи представлены потоками или процессами, которые нужно выполнить.

Само планирование осуществляется планировщиком, который нацелен:

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

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

Типы процессов в Linux

В Linux процессы делятся на два типа:

  • Процессы реального времени.
  • Условные процессы.

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

В качестве примера можно привести процесс переноса, отвечающий за распределение рабочей нагрузки между ядрами ЦПУ.

Условные же процессы не ограничиваются строгими рамками времени ответа и в случае занятости системы могут подвергаться задержкам.

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

У каждого типа процессов есть свой алгоритм планирования. При этом пока есть готовые к выполнению процессы реального времени, выполняться будут они, оставляя условные процессы в ожидании.

Планирование в реальном времени

В случае с планированием в реальном времени используются две политики, SCHED_RR и SCHED_FIFO .

Политика определяет количество выделяемого процессу времени, а также принцип организации очереди на выполнение.

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

SCHED_FIFO

В данной политике планировщик выбирает процесс, ориентируясь на время его поступления (FIFO = первым вошел, первым вышел).

Процесс с политикой планирования SCHED_FIFO может «освободить» ЦПУ в нескольких случаях:

  • Процесс ожидает, к примеру, операции ввода/вывода, после чего по возвращению в состояние «готов» помещается в конец очереди.
  • Процесс уступил ЦПУ через системный вызов sched_yield , после чего он тут же возвращается в конец очереди.

SCHED_RR

SCHED_RR подразумевает циклическое планирование.

В этой политике каждый процесс в очереди получает интервал времени (квант) и выполняется в свою очередь (исходя из приоритета) по циклическому принципу.

Читайте также:  Cisco anyconnect secure mobility client для windows

Для лучшего понимания рассмотрим пример, где в очереди находятся три процесса, A B C , все из которых работают по политике SCHED_RR .

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

Обобщение по планированию в реальном времени

Процесс реального времени может планироваться по двум разным политикам, SCHED_FIFO и SCHED_RR .

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

Условное планирование

Здесь мы знакомимся с Completely Fair Scheduler (CFS, абсолютно справедливый планировщик), представляющим алгоритм планирования условных процессов, появившийся в версии Linux 2.6.23.

Помните метрики планирования, которые мы затронули в начале статьи? Так вот CFS фокусируется на одной из них – он стремится к максимальной равноправности процессов, то есть обеспечивает выделение всем процессам равных квантов времени ЦПУ.

Обратите внимание, что процессы с повышенным приоритетом все равно могут получать на обработку больше времени.

Для лучшего понимания принципа работы CFS нужно познакомиться с новым термином – виртуальное время выполнения ( vruntime ).

Виртуальное время выполнения

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

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

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

CFS —Абсолютно справедливый планировщик

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

CFS задействует красно-черное дерево, представляющее бинарное дерево поиска – то есть добавление, удаление и поиск выполняются за O(logN) , где N выражает количество процессов.

Ключом в этом дереве выступает виртуальное время выполнения процесса. Новые процессы или процесс, возвращающиеся из ожидания в состояние готовности, добавляются в дерево с ключом vruntime = min_vruntime . Это очень важный момент, который позволяет избежать дефицита внимания ЦПУ для старых процессов.

Вернемся к самому алгоритму. В первую очередь он устанавливает себе лимит времени – sched_latency .

В течение этого времени алгоритм стремится выполнить все готовые процессы – N . Это означает, что каждый процесс получит интервал времени равный временному лимиту, поделенному на количество процессов: Qi = sched_latency/N .

Когда процесс исчерпывает свой интервал ( Qi ), алгоритм выбирает в дереве следующий процесс с наименьшим виртуальным временем.

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

Предположим, что алгоритм выбрал лимит времени 48мс при наличии 6 процессов – в этом случае каждый процесс получит на выполнение по 8мс.

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

Почему?

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

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

Предположим, что на него уходит 1мс. В первом примере, где каждому процессу у нас отводилось по 8мс, это вполне допустимо. Так мы тратим 1мс на переключение контекста и 7мс на фактическое выполнение процесса.

А вот во втором примере на выполнение каждого процесса останется уже всего по 0.5мс – то есть большая часть времени уходит на переключение контекста, отсюда и проблема с выполнением.

Для того, чтобы исправить ситуацию, мы вводим новую переменную, которая определит минимальную протяженность кванта времени выполнения – min_granularity .

Представим, что min_granularity = 6мс , и вернемся к нашему примеру, где лимит времени равен 48мс при наличии 32 процессов.

С помощью той же формулы, что и прежде, мы получаем по 1.5мс на каждый процесс, но теперь такой вариант не допускается, так как min_granularity задает минимальный квант времени, который должен получить каждый процесс.

В данном случае, где Qi , мы берем Qi равным min_granularity , то есть 6мс, и соответствующим образом изменяем временной лимит. В результате он составит Qi x N = 6мс x 32 = 192мс .

На данный момент отличия между CFS и RR могут оказаться недостаточно наглядны, поскольку они оба определяют временные интервалы и организуют порядок выполнения процессов. Для лучшего обобщения и понимания различий между этими алгоритмами я приведу краткую таблицу:

Читайте также:  Как подключить windows kits
RR – циклический список CFS – абсолютно справедливый планировщик
  • Квант времени статичен и не зависит от количества процессов в системе.
  • Квант времени динамичен и может изменяться в соответствии с количеством процессов в системе.
  • По исчерпанию процессом его кванта времени, RR выбирает очередной процесс с наименьшим виртуальным временем из циклического списка.
  • По исчерпанию процессом его кванта времени, CFS выбирает очередной процесс с наименьшим виртуальным временем из красно-черного дерева.

Надеюсь, что статься помогла вам лучше понять реализацию планирования задач в ядре Linux.

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

Источник

Get Your Work Done Faster With These To-Do List Apps on Linux Desktop

Last updated January 12, 2021 By Ankush Das 39 Comments

Getting work done is super important. If you have a planned list of things to do, it makes your work easier. So, it’s no surprise why we’re talking about to-do list apps on Linux here.

Sure, you can easily utilize some of the best note taking apps on Linux for this purpose but using a dedicated to-do app helps you stay focused on work.

You might be aware of some online services for that— but how about some cool Linux apps that you can use to create a to-do list? In this article, I’m going to highlight the best to-do list apps available for Linux.

Best To-Do List Applications For Desktop Linux Users

I have tested these apps on Pop!_OS. I have also tried to mention the installation steps for the mentioned apps but you should check your distribution’s package manager for details.

Note: The list is in no particular order of ranking

1. Planner

Planner is probably the best to-do list app I’ve across for Linux distributions.

The best thing is — it is a free and open-source project. It provides a beautiful user interface that aims to give you a meaningful user experience. In other words, it’s simple and yet attractive.

Not to forget, you get a gorgeous dark mode. As you can see in the screenshot above, you can also choose to add emojis to add some fun to your serious work tasks.

Overall, it looks clean while offering features like the ability to add repeating tasks, creating separate folder/projects, sync with todoist etc.

How to install it?

If you’re using elementary OS, you can find it listed in the app center. In either case, they also offer a Flatpak package on Flathub.

Unless you have Flatpak integration in your software center, you should follow our guide to use Flatpak on Linux to get it installed.

In case you want to explore the source code, take a look at its GitHub page.

2. Go For It!

Yet another impressive open-source to-do app for Linux which is based on todotxt. Even though it isn’t available for Ubuntu 20.04 (or later) at the time of writing this, you can still use it on machines with Ubuntu 19.10 or older.

In addition to the ability to adding tasks, you can also specify the duration/interval of your break. So, with this to-do app, you will not just end up completing the tasks but also being productive without stressing out.

The user interface is plain and simple with no fancy features. We also have a separate article on Go For It — if you’d like to know more about it.

You can also use it on your Android phone using the Simpletask Dropbox app.

How to install it?

You can type the commands below to install it on any Ubuntu-based distro (prior to Ubuntu 20.04):

In case you want to install it on any other Linux distro, you can try the Flatpak package on Flathub.

If you don’t know about Flatpak — take a look at our complete guide on using Flatpak. To explore more about it, you can also head to their GitHub page.

Читайте также:  Mac os поворот экрана

3. GNOME To Do

If you’re using Ubuntu or other Linux distribution with GNOME desktop envioenment, you should already have it installed. Just search for “To Do” and you should find it.

It’s a simple to-do app which presents the list in the form of cards and you can have separate set of tasks every card. You can add a schedule to the tasks as well. It supports extensions with which you can enable the support for todo.txt files and also integration with todoist.

4. Task Coach

Task Coach is yet another open-source to-do list app that offers quite a lot of essential features. You can add sub-tasks, description to your task, add dates, notes, and a lot more things. It also supports tree view for the task lists you add and manage.

It’s a good thing to see that it offers cross-platform support (Windows, macOS, and Android).

Overall, it’s easy to use with tons of options and works well.

How to install it?

It offers both .deb and .rpm packages for Ubuntu and Fedora. In addition to that, you can also install it using PPA.

You can find all the necessary files and instructions from its official download page.

You may notice an installation error for its dependencies on Ubuntu 20.04. But, I believe it should work fine on the previous Ubuntu releases.

In my case, it worked out fine for me when using the AUR package through Pamac on Manjaro Linux.

5. Todour

A very simple open-source to-do list app that lets you utilize todo.txt file as well. You may not get a lot of options to choose from — but you get a couple of useful settings to tweak.

It may not be the most actively developed to-do list app — but it does the work expected.

How to install Todour?

If you’re using Manjaro Linux, you can utilize pamac to install Todour from AUR.

Unfortunately, it does not provide any .deb or .rpm package for Ubuntu/Fedora. So, you’ll have to build it from source or just explore more about it on its GitHub page.

6. Super Productivity

It is a mind-blowing to-do app with a lot of essential features. You can even integrate GitHub issues and assign yourself the tasks if you want.

To learn more about it, you might want to check out our detailed article about it.

How to install Super Productivity?

You can find the AppImage file, and the Deb package from its GitHub releases section. In addition to that, you can also find a snap for it available.

Bonus: Terminal-based Taskwarrior to do list app

A command-line based open-source to-do list program “Taskwarrior” is an impressive tool if you don’t need a Graphical User Interface (GUI). It also provides cross-platform support (Windows and macOS).

It’s quite easy to add and list tasks along with a due date as shown in the screenshot above.

To make the most out of it, I would suggest you to follow the official documentation to know how to use it and the options/features that it offers.

How to install it?

You can find it in your respective package managers on any Linux distribution. To get it intalled in Ubuntu, you will have to type the following in the terminal:

For Manjaro Linux, you can simply get it installed through pamac that you usually need to install software in Manjaro Linux.

In case of any other Linux distributions, you should head to its official download page and follow the instructions.

Wrapping Up

As an interesting mention, I’d like you to take a look at TodoList, which is an applet for KDE-powered distributions. Among mainstream to-do list applications, Remember The Milk is the rare one that provides a Linux client. It is not open source, though.

I hope this list of to-do specific apps help you get things done on Linux.

Did I miss any of your favorite to-do list apps on Linux? Feel free to let me know what you think!

Like what you read? Please share it with others.

Источник

Оцените статью