mayamba
Тренировки в бассейне
Здравствуйте. Решил плотно заняться тренировками в бассейне и, так как опыта в этом мало, то прошу у вас совета: как правильно заниматься в бассейне, чему уделять внимание, может быть какие-то интересные упражнения посоветуете, и пр. все что может быть важным. Тщательно изучу и буду двигаться к цели. Цель - конечно же сбросить вес, причем приличный, и не убиться. Раньше плаванием занимался, даже были разряды. Но это было в прошлой жизни)
Спасибо!
Ваши советы по обучению
Здравствуйте.
Волею судеб преподаю в ВУЗе, поэтому часто отвечаю на всякие сложные вопросы, касательно карьеры, будущего ИТ, технологий и пр. Не скажу, что сам представляю истину в последней инстанции, но часто делюсь опытом и часто он помогает, судя по отзывам студентов и выпускников.
Решил обсудить с вами некоторые вопросы, которые, как показывает опыт, часто задаются первокурсниками. Свое мнение я пока не буду высказывать, так как хочу получить целостную картину. Быть может я сам где-то ошибаюсь. Вопросов немного, поэтому буду признателен за ваш опыт и высказывания.
1) Устарели ли книги в ИТ и имеет ли смысл тратить время на них? Здесь обычно приводят в пример то, что книга устаревает еще до публикации. Понятное дело, что есть "золотая база" книг, которые вечные и за 30 лет не устарели, но что вы думаете?
2) Видео и YouTube смогут быть полезными в изучении ИТ? Здесь обычно имеется ввиду тот факт, что в видео много "воды" и полезного там весьма мало (не всегда, но попробуйте сначала найти полезные видео), а времени будет потрачено весьма много. Книги тут часто предпочтительней, по мнению некоторых.
3) Как вы, будучи профессионалами/специалистами, строите свое обучение? Так и остался принцип: 80% практики и 20% теории либо вы нашли какой-то более короткий путь? Какие советы бы вы дали начинающим свой путь в ИТ в плане построения обучения?
4) Ваше мнение: курсы полезны или это пустая трата денег? Здесь обычно предлагают пару мнений: можно либо выкупать весь курс с нуля и становиться "разработчиком Пайтона" под ключ, а можно с книжкой изучить основу и выкупать только те курсы, которые заполняют пробелы в знаниях. В обоих случаях есть плюсы/минусы, ваше мнение?
5) И последний вопрос: как вы боретесь с профессиональным привыканием к одной области работы и расширяете свой кругозор? Имеется ввиду тот факт, что будучи, к примеру, sysdba, вы знаете много про СУБД, а про сети и прочее уже меньше. На всё вас не хватает (тупо не хватит времени), при этом на рынке труда требуется народ с возросшими скиллами и в сетях, и в ОС и пр. Думаю нет смысла спорить, что рынок труда ИТ сейчас перегрет предложениями со стороны работников. И вопрос больше в том, как совмещать работу в одной отрасли с изучением смежных, при этом и с получением опыта в этих смежных областях? Ваш опыт что подсказывает?
Список, возможно, расширю, если будет интересно.
Спасибо заранее.
Производительность в Linux: метод USE
Добрый день. Как я уже понял, начал я слишком издалека, - все-таки стоит сразу рассказать про рабочие инструменты анализа и решения проблем производительности, а определения давать "по ходу дела". Так и поступим.
Проблемы производительности могут возникать и исчезать, они могут быть связаны с одной из подсистем программно-аппаратного комплекса, а могут затрагивать сразу несколько, тем самым резко усложняя процесс поиска и устранения причины замедления системы. Способность быстро выявлять факторы проблемы означает, что мы можем быстрее реагировать на них, что, в свою очередь, приводит к сокращению времени простоя или времени наличия проблемы. Было бы заманчиво обзавестись максимально универсальной методикой или отдельным методом поиска проблем производительности в различных подсистемах, тем самым максимально унифицируя и упрощая процесс устранения проблемы.
Одним из подобных методов является U.S.E. (или USE): Utilization Saturation and Errors method, который был предложен Бренданом Греггом (Brendan Gregg), ведущим аналитиком производительности систем из компании Netflix. Более подробно о методе U.S.E. можно узнать на его сайте: https://www.brendangregg.com/usemethod.html а мы пока рассмотрим USE как практический вариант, который можно применить в повседневной работе.
Метод USE в первом приближении может быть рассмотрен как простой чек-лист на случай возникновения чрезвычайной ситуации для всех критических ресурсов вашей системы: для каждого ресурса вашей системы проверьте наличие одного или нескольких элементов из списка:
Использование/загрузка (UTILIZATION): среднее время, в течение которого ресурс был в работе или в обслуживании других систем. Обычно мы представляем использование в процентах за определенное время, например CPU, диски, и т.д.
Насыщение (SATURATION): объем работы, который ресурс не может обслужить. Обычно мы представляем эту метрику как длину очереди.
Ошибки (ERRORS): наличие ошибок любого рода, связанных с ресурсом и способных влиять на производительность: сбойные сектора на диске, ошибки сетевых протоколов и т.д.
Давайте определимся с понятием ресурса - это любой функциональный компонент вашей системы: сетевые соединения и процессоры, диски, память и прочее. Потенциально ресурс может быть исчерпан либо заблокирован и тем самым может быть спровоцирована ситуация "бутылочного горлышка" (bottleneck) или же вообще ошибки (error). При этом не исключается, что ресурс может быть вообще программным. Программные ресурсы мы рассматривать пока не будем, поэтому сосредоточимся на аппаратных ресурсах.
Важно помнить, что использование/загрузка и насыщение — это показатели зависящие от времени, поэтому поиск оптимального интервала наблюдения для их корректного определения может потребовать тестов и некоторого исследования с помощью некоторой системы мониторинга. Так, в ходе тестов системы мониторинга любого рода стоит предусмотреть ситуацию, когда всплеск использования либо загрузки ресурса может вызвать проблемы с насыщением и производительностью, хотя на значительном промежутке времени использование либо загрузка ресурса может быть в среднем небольшим. Сокращение же временного интервала может выявить всплески (burst) использования либо загрузки ресурса.
Начать использовать метод USE достаточно просто:
Создайте контрольный список ресурсов. Подумайте обо всех различных ресурсах, которые использует ваша система, и о том, как вы хотите их измерить. Некоторые ресурсы способны вызывать проблемы с производительностью более чем одним способом: например, сетевое соединение может вызывать проблемы с I/O, а также проблемы с производительностью CPU. Удостоверьтесь, что создали отдельный элемент мониторинга для каждого типа проблемы, чтобы сделать процесс идентификации более полным и быстрым.
Метод USE лучше всего работает с ресурсами, производительность которых снижается при интенсивном использовании. Он плохо работает с ресурсами, использующими кэширование, поскольку кэширование повышает производительность ресурсов при интенсивном использовании.
В дополнении, часто упускается из виду, что CPU, память и ввод-вывод (I/O) связаны между собой, однако проблемы производительности в этом моменте достаточно редки. С другой стороны, если это все-таки так, то у вас крупные проблемы с аппаратной либо программно-аппаратной частью системы и стоит задуматься об обновлении либо оптимизации "железа" системы. В любом случае, метод USE подскажет вам в этом случае то, что проблемы с ресурсами в иных подсистемах отсутствуют и стоит повнимательнее отнестись к производительности соединений компонентов.
Построение системы мониторинга. На этом этапе необходимо в выбранной системе мониторинга создать метрики, учитывая список ресурсов и типы метрик. Для каждого ресурса стоит предусмотреть надежный способ сбора метрик каждого типа (загрузка/насыщение/ошибки), их обработку и своевременное уведомление системы или пользователя об отклонениях от заданных значений. Например для системы хранения данных имеет смысл анализировать ошибки устройства (errors: hard/soft), насыщение (длина очереди ожидания, wait queue length), использование либо загрузку (device busy, %).
Удостоверьтесь в том, что правильно интерпретируете получаемые показатели. Для некоторых показателей интерпретация может быть очевидной, для других - показатели могут зависить от нагрузки или наличия/отсутствия очередей. Общие рекомендации, которые приводит автор метода, следующие:
- Использование/загрузка ресурса: максимальная загрузка ресурса обычно является признаком проблемы. Чрезмерная загрузка (например, более 70%) может стать проблемой по нескольким причинам: когда загрузка ресурса измеряется в течение относительно длительного периода времени (несколько секунд или минут), общая загрузка, скажем, 70 % может скрыть короткие всплески 100 % загрузки.
Некоторые системные ресурсы, такие как жесткие диски, не могут быть прерваны во время операции даже для работы с более высоким приоритетом. Когда их загрузка превышает 70%, задержки в очереди могут стать более частыми и заметными. С другой стороны, CPU могут быть прерваны («разгружены») практически в любой момент.
- Насыщенность: любая ненулевая степень насыщенности может быть проблемой. Это может быть измерено как длина очереди ожидания или время ожидания в очереди.
- Ошибки: заслуживают изучения ненулевые счетчики ошибок, особенно если они продолжают увеличиваться при сохраняющейся низкой производительности.
Уже добавлю от себя: согласуйте предельные параметры с имеющимся в комании или у клиента SLA. В вашей компании может иметься действующий SLA, который может описывать доступность некоторых систем. Добавляя в систему мониторинга метрики и устанавливая предельные значения срабатывания (например предустановки триггеров в Zabbix) имеет смысл удостовериться, что вы не выходите за пределы действующего SLA и проблема не успеет развиться до такого состояния, при котором может произойти нарушение соглашения.
И тоже от себя: настроив систему мониторинга сразу настраивайте весь спектр требуемых оповещений и уведомлений, включая информационные панели и мнемосхемы. Рекомендую поначалу тестировать систему мониторинга и особенно уведомлений "на кошках", то есть на группе коллег, которые не будут впадать в панику при каждом оповещении об уровне загрузки CPU в 100%. Затем планомерно и вдумчиво настраивайте систему на оптимальный уровень срабатывания уведомлений и контроля данных. Цель всех действий состоит в том, чтобы выявлять проблемы на ранней стадии и решать их до того, как они повлияют на пользователей или производительность системы.
У автора метода можно найти неплохую таблицу для контроля производительности различных ОС, находится она тут: https://www.brendangregg.com/USEmethod/use-rosetta.html Отнеситесь к ней как к руководству, но не как к единственно верному способу контроля требуемых параметров.
В заключении стоит сказать, что метод USE действительно работает как базовый метод для быстрого развертывания мониторинга производительности и дает отличные результаты.
Если будут какие-либо пожелания или вопросы - добро пожаловать в комментарии.
Производительность в Linux, часть 0.01
Всем привет. Давно хотел как-то структурировать информацию, которая накапливается у меня по мере работы и которую черпаю из разных источников. Если будет интересно - готов делиться ею с заинтересованными людьми. Про себя расскажу позже, если будет в этом потребность.
Пока есть мысль поделиться с вами циклом небольших заметок о производительности в ОС Linux, неважно какого дистрибутива, c целью ее (производительности же!) улучшения. Начну с базовых вещей, разбавлю переводами ряда интересных статей, собственным опытом, примерами из сети. С удовольствием выслушаю ваши пожелания, предложения, может еще что-то интересное подскажете. Писать буду по мере сил и возможностей, постараюсь не ссылаться на предыдущие части, чтобы не сбивать с толку. Получится (надеюсь) что-то вроде набора коротких заметок.
Начнем с азов - обсудим два понятия: "задержка" и "пропускная способность". Не будем уходить в глухую википедию, а вспомним смеситель в ванной: открывая соответствующий кран, мы не наблюдаем воду в ту же секунду - воде требуется время, чтобы очутиться в раковине. Будем называть это задержкой - то есть время между началом воздействия и результатом этого воздействия. Начиная какой-то процесс, мы не получаем результат сразу же, скорее всего это займет время.
При этом, если продолжать аналогию, ванна наполнится тем быстрее, чем больше сечение сливной трубы - то есть пропускная способность системы "кран-сливная труба" тем выше, чем больше сечение получившегося канала.
Другой пример связан с транспортом: железнодорожный состав способен перевезти в разы больше груза, чем автомобильный транспорт. Но у последнего потенциально выше скорость. Можно сказать, что у ж/д состава выше пропускная способность, а у автомобиля - меньше задержка.
Теперь давайте подумаем, как это применимо к компьютерным системам. Если говорить про сеть, то обмен данными там идет пакетами, то есть обособленными единицами, каждая из которых имеет служебные данные (service data/protocol overhead) и полезную нагрузку (payload). Последняя как раз-таки и представляет интерес, мало кого из пользователей заботит служебная информация. Увеличить пропускную способность сети мы можем, применяя jumbo packets - увеличенные в размерах пакеты (~9000 байт и более вместо 1518 байт) - обмениваясь такими единицами, мы повышаем количество полученной информации, то есть растет параметр пропускной способности. Но при этом растут и затраты на передачу такого объема, занятость линии, загрузка аппаратной части и прочие вещи. То есть мы при этом ухудшили параметр задержки.
С другой стороны, можем сделать пакеты совсем мелкими, как в протоколе АТМ (48 байт), но теперь каждые 48 байт мы будем обязаны вставить служебную информацию. Уменьшилась задержка, уменьшилась пропускная способность.
Что лучше? Вопрос открытый. Если ваша система - трубопровод и вы качаете нефть, то, вероятно, вам будет важна пропускная способность. Для компьютерных систем, вероятно, можно привести пример систем, работающих без участия человека: хранение информации и ее передача, замкнутые системы СУБД и пр. Если же ваша система - логистика пищевых продуктов, например, доставка горячей еды, то вы заинтересованы в сокращении времени ожидания - то есть в уменьшении задержки. Для компьютерных систем происходит ровно то же самое: если в процессе обработки появляется человек, то задержка начинает играть роль. Мы начинаем замечать ее уже на уровне 100 миллисекунд, а уже при 200-300 мс она начинает нас раздражать. Телефонные линии спроектированы с учетом задержки в 100 мс.
Таким образом, производительность ОС Linux и работы по ее улучшению тесно связаны с рядом аспектов системы, первый из которых - что это за система и какова ее роль.
Ответ на пост «Ну раз пошла такая пьянка, один из моих любимых анекдотов»
Общественный сортрир. Две кабинки (1 и 2).
Из обеих раздается мучительное кряхтение и пыхтение.
1. Мммммммммммммм...
2. Ыыыыыыыыыыыыы...
1. Ммммммммммммм...
2. Ыыыыыыыыыыыыы...
1. Ммммммммммммм...
2. Ыыыыыыыыы... Всплеск воды в унитазе - плям!!!
1. (Сдавленно) "Ззззз-дрррр-вляю"!!!
2. (Не менее сдавленно) "Не ссссс-тоит... Это были очки."