gpt4 book ai didi

java - SimGrid。异步通信和失败的链接

转载 作者:行者123 更新时间:2023-12-01 10:00:54 25 4
gpt4 key购买 nike

模拟有一个 master和七个workers 。当工作人员结束执行数据时,他们dsend messageTasksmaster关于执行完成。

 getHost().setProperty("busy", "no");
ReleaseTask releaseTask = new ReleaseTask(getHost().getName());
releaseTask.dsend("Master");

链接连接worker1master被打破。这是link1.fail文件。

PERIODICITY 2
0 1
1 0

我预计只有一个 releaseTask (来自worker1)无法到达master 。但不幸的是,没有releaseTasks (来自其他 worker )实现 master 。出现此错误警告:

[13.059397] /builds/workspace/SimGrid-Multi/build_mode/Debug/node/simgrid-ubuntu-trusty-64/build/SimGrid-3.13/src/simix/smx_global.cpp:554: [simix_kernel/CRITICAL] Oops ! Deadlock or code not perfectly clean.
[13.059397] [simix_kernel/INFO] 16 processes are still running, waiting for something.

大师接收task这样:

Task listenTask = Task.receive("Master");

链接连接时 worker1master没有损坏,所有模拟工作正常。

如何避免这个问题?

已更新

我的platform.xml文件:

<link id="0_11" state_file="linkfailures/0_11.fail" bandwidth="3.430125Bps" latency="4.669142ms"/>

0_11.fail文件:

PERIODICITY 2
0 1
1 0

worker 开始dsend一个MessageTask掌握在 6.94 秒。 MessageTask传输时间为0.07秒。但在 7 点。连接master和worker的链接开始断开。我猜主人继续永恒的“接收”数据并且发生错误。但如何处理呢?

最佳答案

如果您使用 dsend 发送数据,这只意味着你不关心接收者是否收到或者是否发生错误。它不会使通信更加健壮(也不会降低健壮性)。

您更新了您的问题,为您的模拟提供了两种可能的结果。有时您会说没有通信使其成为主控,并且当 SimGrid 报告死锁 ( 16 processes are still running, waiting for something ) 时模拟结束,有时您会报告 TransferFailureError 。正在发生。但实际上,如果我是对的,这正是您的情况所期望的。

发生的情况是这样的:

  • 您使用 dsend 发送消息
  • 由于链接失败,消息丢失。不,它不会因为链接失败而永远传递,它会立即消失。

此时有两种可能的结果,具体取决于通信开始之前或之后(接收者发布其 recv 之前或之后)链接是否失败。

  • 如果链接在接收者(在您的情况下似乎是主机)发布其 recv 之前失败请求,那么失败将不会被注意到。事实上,还没有接收者通知,发送者表示不关心通信结果,通过使用 dsend .
  • 如果在接收方发布请求后链接失败,则发送方不会注意到任何事情(因为 dsend ),并且接收方会收到 TransferFailureException关于其接收操作。所以即使你用 dsend 发送,失败的通信也会杀死某人,但实际上死的是主人。这就是为什么其他奴隶无法与主人通信的原因:他在从可疑主机接收某些东西时遇到了未捕获的异常。

如果您希望发件人注意到您的邮件未通过(可能需要重新发送),那么您不想使用 dsend但是isend (对于异步通信)或 send (用于阻塞通信)。并且发送方必须关注通信的状态。

如果您希望消息真正延迟但不被破坏,请尝试将链接的带宽更改为 0 一段时间(使用 availability_file 代替 if state_file )。

如果您希望接收器能够解决此类通信问题,只需捕获它出现的异常即可。

关于java - SimGrid。异步通信和失败的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36817190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com