Nano Hash - криптовалюты, майнинг, программирование

Загрузка ЦП Java + JDBC

При тестировании моего веб-приложения под нагрузкой я получил следующий отрывок top под Linux:

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
3964 nobody    20   0 4965m 622m 6048 S  8.5 11.0   6:02.49 java 
1985 mysql     20   0  294m 125m 3804 S  2.1  2.2   0:05.39 /usr/sbin/mysqld

Мне нужно объяснение столбца %CPU Java. Насколько я понимаю, во время веб-запроса один из потоков java выполняет какую-то чистую логику Java, потребляя часть процессорного времени (пусть это будет 5 мс). Затем он подключается к базе данных через JDBC, отправляет какой-то sql-запрос и ждет, скажем, 10 мс ответа. Эти 10 мс, очевидно, учитываются как /usr/sbin/mysqld использования ЦП. Затем поток java возобновляет свою работу и завершается, потребляя еще 20 мс и составляя общее время выполнения 5+10+20=30 мс.

И вопрос новичка: не думаете ли вы, что эти связанные с базой данных 10 мс учитываются дважды: один раз как поток Java, ожидающий обработки запроса базой данных, а второй раз как само использование ЦП базы данных? Что я тут не понимаю?


Ответы:


1

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

(Хорошо, если нужно собрать много мусора, эта «мелочь» может оказаться не такой уж и маленькой.)

11.04.2011
  • Спасибо, я должен был сам догадаться, что процессорное время считается на гораздо более детальном уровне. Очевидно, это недостаток отсутствия опыта низкоуровневого программирования. 11.04.2011
  • Новые материалы

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

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..