Процессы не запущены одновременно

Я запускаю 2 отдельных экземпляра эквивалентного Java-кода для указанной ниже псевдопрограммы на двухъядерной машине без какой-либо другой активности на этой машине. Оба регистрируются в одном и том же файле, используя log4j.

for each url
    step 1. download data from url to U //takes 3-5 seconds
    step 2. perform computation on data f(U) = A. //0.1 sec
    step 3. Store A to disk
    step 4. perform computation on data g(U) = B. //0.5 sec
    step 5. Store B to disk

Что-то странное происходит в логах. Я ожидаю, что эти 2 экземпляра будут работать полностью независимо друг от друга, и поскольку шаг 1 является самой длительной операцией, большую часть времени они оба должны ожидать ответа URL в журналах:

process M: downloading data from url1
process N: downloading data from url2
//below in random order
process M: performing computation on data f(U1) = A1
process N: performing computation on data f(U2) = A2
process M: storing to disk A1
process M: performing computation on data g(U1) = B1
process N: storing to disk A2
//etc...

Но журналы всегда, кажется, упорядочены как ниже САМОГО времени. Параллелизм не виден:

process M: downloading data from url1
process M: performing computation on data f(U1) = A1
process M: storing to disk A1
process M: performing computation on data g(U1) = B2
process M: storing to disk B1
process N: downloading data from url2
process N: performing computation on data f(U2) = A2
process N: storing to disk A2
process N: performing computation on data g(U2) = B2
process N: storing to disk B2
process M: downloading data from url3
//etc...

Что может быть причиной этой проблемы? Некоторые возможности:

Двухъядерные процессоры не используются должным образом?

Они не могут получить доступ к Интернету одновременно?

Ведение журнала как-то блокирует процесс?

Наконец, как мне заставить их работать параллельно?

0 ответов

Другие вопросы по тегам