2015-09-23 7 views
1

У меня есть две хост-машины, соединенные Mellanox infiniband HCA. Я выполняю простое приложение RDMA для выполнения операций чтения RDMA и RDMA с одного компьютера (клиента) на другом компьютере (сервере). Чтобы узнать, какие прерывания связаны с HCA карт на каждой машине, я побежал следующую команду:Почему отказ IRQ от linux вызывает ошибки rdma_read и rdma_write?

less proc/interrupts 

    67: 475880 50253  0  0 PCI-MSI-edge [email protected]:0000:01:00.0 
    68: 399002  0  73  0 PCI-MSI-edge mlx4_0-0 
    69:  0 3264  23  0 PCI-MSI-edge mlx4_0-1 
    70:  0  0  0  0 PCI-MSI-edge mlx4_0-2 
    71:  0  0  0  0 PCI-MSI-edge mlx4_0-3 

На серверной машине, я экспериментировал, что с помощью функции __disable_irq() на этих 4 прерываний вызывает все RDMA чтения/записи операции, выполняемые клиентом с ошибкой, с сообщением об ошибке «счетчик повторных попыток транспорта».

Мой вопрос в том, почему и когда операции чтения/записи RDMA могут генерировать irqs на удаленной машине? Я думал, что если они не задействуют удаленный процессор, то они не будут выполнять никаких IRQ.

Затем, почему отключение этих прерываний приводит к сбою этих операций?

+0

Использует ли ваше приложение RDMA librdmacm или просто libibverbs? (Или что-то еще?) –

+0

@haggai_e, приложение RDMA использует 'libibverbs'. спасибо за ваше время! –

+0

Трудно сказать, что пойдет не так с вашим экспериментом, но я полагаю, что есть много других приложений, которые могут использовать прерывания. Возможно, openSM SM не может связаться с клиентской системой? –

ответ

1

Не все транзакции являются транзакциями RDMA.

Кроме того, когда вы пишете в память другого компьютера, вам нужно прерывать, чтобы заметить, когда запись закончилась (чтобы вы знали, когда сможете повторно использовать собственную память) и уведомить другую машину о том, что новые данные показанный в его памяти.

+0

Спасибо за ваш ответ. Согласно (http://www-01.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.rdma/rdma_write_or_rdma_write_with_immediate.htm и http://www-01.ibm.com/support/knowledgecenter/ssw_aix_71 /com.ibm.aix.rdma/rdma_write_or_rdma_write_with_immediate.htm) и RDMA RFC (https://www.ietf.org/rfc/rfc5040.txt) стр. 13, ** никаких уведомлений ** (IRQ?) не отправляются удаленный хост во время чтения/записи RDMA. Вот почему я спрашиваю, почему и когда IRQ участвует в этих операциях. –