Как я могу отслеживать пропускную способность передачи в кластере Dask? - PullRequest
0 голосов
/ 17 мая 2019

Я хотел бы выполнить некоторые сетевые тесты на моем кластере Dask.Как лучше всего получить подробную информацию о последних переводах?

1 Ответ

0 голосов
/ 17 мая 2019

Приборная панель

Многие люди используют для этого Панель инструментов Dask и следят за наличием красных полос на графике потока задач.

get_task_stream

Однако, если вы проводите тесты, возможно, идея просмотра живого сюжета во время вычислений - это не то, что вам нужно. Вы можете получить ту же информацию, используя менеджер контекста dask.distributed.get_task_stream .

>>> from dask.distributed import get_task_stream
>>> with get_task_stream() as ts:
...     x.compute()
>>> ts.data
[...]

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

transfer_logs

Кроме того, на момент написания этой статьи работники Dask ведут журналы каждой передачи в атрибутах Worker.incoming_transfer_log и Worker.outgoing_transfer_log. Вы можете использовать метод Client.run, чтобы получить их.

>>> client.run(lambda dask_worker: dask_worker.incoming_transfer_log)
{'tcp://192.168.1.191:50637': deque([]),
 'tcp://192.168.1.191:50638': deque([]),
 'tcp://192.168.1.191:50640': deque([{'start': 1558119113.3489196,
         'stop': 1558119113.4012725,
         'middle': 1558119113.375096,
         'duration': 0.0523529052734375,
         'keys': {"('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 27, 0)": 463941,
          "('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 23, 0)": 464477,
          "('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 7, 0)": 463708,
          "('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 15, 0)": 464091,
          "('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 19, 0)": 464826,
          "('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 3, 0)": 463847,
          "('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 11, 0)": 464200},
         'total': 3249090,
         'bandwidth': 62061312.22384144,
         'who': 'tcp://192.168.1.191:50642'},
        {'start': 1558119113.3484848,
         'stop': 1558119113.4085395,
         'middle': 1558119113.3785121,
         'duration': 0.060054779052734375,
         'keys': {"('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 12, 0)": 463485,
          "('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 24, 0)": 464183,
          "('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 16, 0)": 464061,
          "('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 4, 0)": 464161,
          "('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 8, 0)": 463925,
          "('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 0, 0)": 464214,
          "('dataframe-sum-chunk-5b219ece79c8315870694c0e17df68ee', 0, 20, 0)": 464070},
         'total': 3248099,
         'bandwidth': 54085604.03074382,
         'who': 'tcp://192.168.1.191:50637'},

Этот ключ вводится работником и дает старт / стоп / общее количество байт / отправителя / получателя каждой передачи. Однако это решение использует внутренний API и может измениться в любое время.

...