#цп — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #цп, aggregated by home.social.
-
[Перевод] Оптимизация кольцевого буфера для повышения пропускной способности
В этой статье мы рассмотрим классический конкурентный кольцевой буфер и обсудим, как его можно оптимизировать для повышения производительности. Я покажу вам, как существенно улучшить этот показатель от 5,5 миллионов элементов в секунду до 112 миллионов элементов в секунду — и эти показатели выше, чем в реализациях Boost и Folly . Если вам требуется готовая реализация со всеми этими оптимизациями, посмотрите мою библиотеку SPSCQueue.h . Кольцевой буфер также называется очередью «один производитель — один потребитель» (SPSC). В ней не бывает ожидания (и, соответственно, не бывает блокировок), это конкурентный примитив. Такая структура данных находит множество вариантов применения, и здесь я рассмотрю передачу сетевых пакетов между сетевым контроллером и драйверами операционной системы. Основная задача, решаемая при этом — выполнение событий ввода/вывода в относительно новом асинхронном API io_uring .
https://habr.com/ru/companies/timeweb/articles/870604/
#timeweb_статьи_перевод #SPSC #arm #цп #linux #ядро #amd #mesi #tlb #буфер
-
[Перевод] Долгий путь к ленивому вытеснению
В настоящее время планировщик работы с ядрами ЦП, действующий в ядре Linux, предусматривает несколько режимов вытеснения. В этих режимах предлагается целый ряд компромиссов между временем отклика и пропускной способностью системы. Ещё в сентябре 2023 года развернулась дискуссия о работе планировщиков , в результате которой была выработана концепция «ленивого вытеснения». Данная концепция упрощает планирование задач в ядре, при этом улучшая результаты. Какое-то время эта работа протекала тихо, но затем ленивое вытеснение было заново реализовано Питером Зайлстрой в виде этой серии патчей . Притом, что сама концепция с виду работает хорошо, здесь ещё немало требуется доделывать.
https://habr.com/ru/companies/timeweb/articles/864760/
#timeweb_статьи_перевод #linux #ядро #планировщик #патчи #концепция #ЦП #режим_вытеснения
-
[Перевод] Вычисления с GPU-ускорением на Python
GPU, также именуемый «видеокартой» или «графическим процессором» – это важнейший компонент компьютера, отвечающий за отображение картинок и видео. Графический процессор, в отличие от обычного ЦП (CPU), превосходно дробит задачи на подзадачи и распараллеливает их. В GPU всегда много ядер, поэтому вычисления на нём выполняются более эффективно. Поэтому GPU идеально подходит для многозадачности. В следующей таблице даётся упрощённое сравнение CPU и GPU.
https://habr.com/ru/companies/timeweb/articles/853578/
#timeweb_статьи_перевод #cpu #gpu #python #процессоры #nvidia #pycuda #cuda #c++ #цп
-
[Перевод] Оптимизация парсера/компилятора при помощи дата-ориентированного проектирования: разбор кейса
В процессе разработки компилятора Roc нам то и дело приходилось углубляться в изучение сложных тем по информатике. Снова и снова всплывает тема скорости, и это касается как производительности среды, в которой исполняется генерируемый нами код, так и производительности самого компилятора. В ходе такой работы нам исключительно пригодился подход под названием «дата-ориентированное проектирование». Это идея, согласно которой при структурировании кода требуется отталкиваться от специфики тех данных, с которыми приходится работать. Дата-ориентированное проектирование часто используется при программировании игр, где именно от скорости среды выполнения зависит, что вы сможете и чего не сможете сделать. В последнее время эта парадигма стала активнее применяться и в других предметных областях, например, в разработке компиляторов для Zig и Rust, а также в других проектах, где акцент делается на ускорении среды выполнения, например, в Mold и Bun . Эндрю Келли, создатель Zig, выступил с отличной лекцией Practical Data-oriented design , которая служит введением в основные идеи, лежащие в основе DoD. В этой статье я покажу, как мы изменили компилятор roc, переработав его с учётом некоторых из этих идей.
https://habr.com/ru/companies/timeweb/articles/850066/
#timeweb_статьи_перевод #Roc #компилятор #zig #rust #bun #mold #DoD #цп #кейс
-
[Перевод] Как Linux создаёт и подсчитывает сокеты
Подробно о том, что происходит под капотом в ядре Linux, когда вы выполняете очередной системный вызов при работе с сокетами.
https://habr.com/ru/companies/timeweb/articles/841462/
#timeweb_статьи_перевод #linux #сокеты #ядро #вебсервер #unix #сетевые_технологии #tcp #udp #цп
-
[Перевод] Запросы и лимиты в Kubernetes: разбираемся в деталях
Управление ресурсами в Kubernetes немного напоминает зефирный тест, который иногда выходит из-под контроля. Если тщательно не лимитировать, сколько ресурсов может потреблять контейнер, он пойдёт вразнос, примерно как малыш, способный слопать большую пачку Skittles за один присест. С другой стороны, если вы постоянно лишаете контейнер минимального объёма ресурсов, который нужен ему для корректной работы, то словно постоянно не подпускаете ваших детей к сладостям. Контейнер будет влачить жалкое существование и работать вполсилы. Вот почему настолько важно правильно настроить в Kubernetes лимиты и работу с запросами. Понимая, какова роль запросов и лимитов при управлении ресурсами и производительностью в Kubernetes, а также умея настраивать и/или задавать запросы и лимиты, вы гарантируете, что на обработку каждой рабочей нагрузки будет выделено ровно столько ресурсов, сколько нужно — ни больше, ни меньше. Далее в этой статье подробно рассказано, как в Kubernetes организована работа с запросами и лимитами, как они используются для управления ресурсами. В любой организации чрезвычайно важно управление ресурсами в Kubernetes и роль такого управления. Разберём управление ресурсами в Kubernetes и начнём с самых азов.
https://habr.com/ru/companies/timeweb/articles/835068/
#timeweb_статьи_перевод #kubernetes #cpu #девопс #IT #троттлинг_в_kubernetes #OOMKill #фичи #цп #resources
-
[Перевод] Компиляторные оптимизации сложны, так как компиляторы забывчивы
Как именно вы спроектировали бы оптимизирующий компилятор? Точнее, как именно вы спроектировали и реализовали бы конкретные оптимизации? Попытка решить эту задачу за один присест — дело ошеломительно сложное и, пожалуй, даже невозможное, так как оптимизации компилятора во многом заключаются в следующем...
https://habr.com/ru/companies/timeweb/articles/826998/
#timeweb_статьи_перевод #компиляторы #оптимизация #shl #consumer #acquire #цп #memory #кэш
-
[Перевод] Туториал по Tokio. 2/2
Hello world! Представляю вашему вниманию вторую часть туториала по Tokio . Первая часть Tokio — это асинхронная среда выполнения (runtime) кода Rust. Она предоставляет строительные блоки, необходимые для разработки сетевых приложений любого размера.
https://habr.com/ru/companies/timeweb/articles/816743/
#timeweb_статьи_перевод #rust #tokio #runtime #асинхронный_код #ПО #языки_программирования #ЦП #ОС #API
-
[Перевод] Linux как платформа для оверклокинга
Недавно я взялся за оверклокинг (разгон процессора) некоторых моих компьютеров. Всегда опасался делать что-то подобное, так как это отличный способ угробить вполне хорошее аппаратное обеспечение и выбросить деньги на ветер. Поэтому думал: «нет, оверклокинг – это не моё». До сих пор так думал. Я осмотрелся и пришёл к выводу, что у меня попросту слишком много аппаратного обеспечения. До меня начало доходить, что современные ЦП создаются с изрядным запасом прочности. Никто не смог бы с уверенностью спрогнозировать потенциал производительности у ЦП произвольной степени качества. Поэтому здесь возникает своего рода ЦП-лотерея. Можно выиграть, а можно и проиграть. Но вы сможете добиться от ЦП вашего компьютера хотя бы небольшого прироста производительности по сравнению с нынешним, если решитесь немного растолкать процессор. Честно говоря, я заинтересовался, а что получится в таком случае. Так я всегда и ввязываюсь в подобные истории. Из-за любопытства.
https://habr.com/ru/companies/timeweb/articles/795859/
#timeweb_статьи_перевод #Linux #ЦП #компьютерное_железо #оверклокинг #BIOS #Windows #Hackintosh #Mac #Apple #Prime95 #Ubuntu
-
[Перевод] Механизм перезапускаемых последовательностей (Rseq) при работе с TCMalloc
❯ Кэши для отдельных ядер процессора В TCMalloc кэши для отдельных ядер процессора реализуются при помощи перезапускаемых последовательностей (man rseq(2)) под Linux. Эту возможность ядра разработали Пол Тёрнер и Эндрю Хантер из Google , а также Мэтью Дезнойерс из EfficiOS. При помощи перезапускаемых последовательностей можно вплоть до завершения выполнять область памяти (атомарно, относительно других потоков, выполняющихся на том же ядре процессора), либо выходить из этого процесса, если ядро прервёт этот процесс, например, вытеснив его или прервавшись на обработку сигнала. Если вы хотите организовать перезапуск системы при миграции с ядра на ядро или при вытеснении процесса, то наиболее общий случай такой операции можно оптимизировать (не переносить с ядра на ядро тот процесс, который уже выполняется), избегая атомарных операций. Можно оптимизировать и более редкий случай – вытеснение как таковое. В результате такого компромисса нужно обеспечить, чтобы на всех путях выполнения нашего кода поддерживались такие операции перезапуска. Вся последовательность, кроме окончательного сохранения в памяти, когда изменение фиксируется, должна быть приспособлена к перезапуску.
https://habr.com/ru/companies/timeweb/articles/789470/
#timeweb_статьи_перевод #Rseq #TCMalloc #Google #EfficiOS #ядро #ID #ПК #C++ #массивы #ЦП #begin #x86 #процессор #кэш
-
[Перевод] Как объяснить суть Kubernetes таксисту
Не так давно я побывала на конференции Kubecon 2023 в Чикаго. Готовясь к конференции, я почитала статьи в блогах, а на самой конференции посетила несколько семинаров для начинающих (в жанре «101»). Но всё равно не могла сказать, что уверенно понимаю эту технологию. Хуже всего прошёл последний день конференции. Я решила добираться в отель на такси и вызвала Uber. И водитель спрашивает: «А о чём была конференция»? Я ему отвечаю: «О Kubernetes». Попыталась объяснить, но почти сразу поняла, что двух слов на эту тему связать не смогу. Только представьте себе: уезжать с трёхдневной конференции, но быть не в силах рассказать таксисту о той технологии, которая на ней обсуждалась. Фейспалм. Поэтому теперь попытаюсь реабилитироваться и пофантазировать, как следовало бы рассказать о Kubernetes таксисту Uber.
https://habr.com/ru/companies/timeweb/articles/775984/
#timeweb_статьи_перевод #Kubernetes #Uber #оркестрация #Nodejs #MongoDB #ЦП #YAML #Kubelet #Go #API
-
Почему вместо покупки очередного ноутбука вам надо купить нормальный настольный #комп. Во-первых, в ноутбуке всё очень плотно и в уменьшенном виде, а два ключевых компонента: #ЦП и #видеокарта — требуют хорошего теплоотвода и, следовательно, нормальных размеров. Поэтому #ноутбук никогда не сможет нормально отображать 4К-видео с частотой 60 Гц (я уж не заикаюсь про 144 Гц), вы не подключите к нему два-три нормальных монитора, про хорошие игры и #3D-экспириенс тоже забудьте. @rf