为什么网络I/O序列化并且不是并行化的?网络I/O序列化
网络I/O序列化
回答
那么,实际的数据包类型的是(他们都采取不同的路线,例如),但在某些时候,你会想,你读出来的数据在你把相同的顺序流它是 - 成为TCP的关键点。你会怎么做呢?
你总是可以使用不同的套接字来增加并行性吗?或者我误解了你的意思?
一些网络协议确实提供“广播”,但是这并不总是可用的(这样会故意被配置为阻止UDP广播例如,许多网络设备)
苹果和桔子。
Serializing是当你采取一些结构化数据,并将其压扁成一个单一的数据序列,可以很容易地传输,然后反序列化在另一端重新创建原始结构。
Parallelizing是将任务分成几个可同时运行的子任务,然后将其结果组合起来以获得相同的结果,就像任务由单个进程运行一样。
因此,并行化不能代替序列化,因为它们被用于不同的目的。
由于焊接电缆连接器比增加更多处理器功率(或为更大线速度添加更复杂的芯片)更昂贵。比较多年来通常用于通信的电缆类型:
Centronics并行电缆 - 36针。
RS232电缆25引脚,则9个引脚
以太网双绞线 - 两对(4针)
USB电缆 - 一对+功率。
此外,通过无线或长距离传输多个通道并不容易。
您能解释一下在尝试通过无线并行通道发送长距离数据时涉及哪些问题? – Aastha 2010-01-27 14:23:29
认为它是一个数据流。数据可以分块并以无序的方式发送/接收。 要重建原始流,块必须重新排序。
通过网络传输时的数据包可能在不同的路线上传输。在接收数据包时如何保持顺序性?据我所知,数据包被编号 - 即使数据包并行发送,编号是否无助于在接收方端重新组装信息? 这可能对流式传输数据没有用处,但是邮件等数据可以并行处理。 – Aastha 2010-01-27 18:02:04
首先,我现在的AMD机器在运行Ubuntu Linux操作系统与6CPU核心,和“PS -ef”的一声:
ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Apr18 ? 00:00:01 /sbin/init
root 2 0 0 Apr18 ? 00:00:00 [kthreadd]
root 3 2 0 Apr18 ? 00:00:00 [migration/0]
root 4 2 0 Apr18 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 Apr18 ? 00:00:00 [watchdog/0]
root 6 2 0 Apr18 ? 00:00:00 [migration/1]
root 7 2 0 Apr18 ? 00:00:00 [ksoftirqd/1]
root 8 2 0 Apr18 ? 00:00:00 [watchdog/1]
root 9 2 0 Apr18 ? 00:00:00 [migration/2]
root 10 2 0 Apr18 ? 00:00:00 [ksoftirqd/2]
root 11 2 0 Apr18 ? 00:00:00 [watchdog/2]
root 12 2 0 Apr18 ? 00:00:00 [migration/3]
root 13 2 0 Apr18 ? 00:00:00 [ksoftirqd/3]
root 14 2 0 Apr18 ? 00:00:00 [watchdog/3]
root 15 2 0 Apr18 ? 00:00:00 [migration/4]
root 16 2 0 Apr18 ? 00:00:00 [ksoftirqd/4]
root 17 2 0 Apr18 ? 00:00:00 [watchdog/4]
root 18 2 0 Apr18 ? 00:00:00 [migration/5]
root 19 2 0 Apr18 ? 00:00:00 [ksoftirqd/5]
root 20 2 0 Apr18 ? 00:00:00 [watchdog/5]
root 21 2 0 Apr18 ? 00:00:00 [events/0]
root 22 2 0 Apr18 ? 00:00:00 [events/1]
root 23 2 0 Apr18 ? 00:00:00 [events/2]
root 24 2 0 Apr18 ? 00:00:00 [events/3]
root 25 2 0 Apr18 ? 00:00:00 [events/4]
root 26 2 0 Apr18 ? 00:00:00 [events/5]
root 27 2 0 Apr18 ? 00:00:00 [cpuset]
root 28 2 0 Apr18 ? 00:00:00 [khelper]
root 29 2 0 Apr18 ? 00:00:00 [async/mgr]
root 30 2 0 Apr18 ? 00:00:00 [sync_supers]
root 31 2 0 Apr18 ? 00:00:00 [bdi-default]
root 32 2 0 Apr18 ? 00:00:00 [kintegrityd/0]
root 33 2 0 Apr18 ? 00:00:00 [kintegrityd/1]
root 34 2 0 Apr18 ? 00:00:00 [kintegrityd/2]
root 35 2 0 Apr18 ? 00:00:00 [kintegrityd/3]
root 36 2 0 Apr18 ? 00:00:00 [kintegrityd/4]
root 37 2 0 Apr18 ? 00:00:00 [kintegrityd/5]
root 38 2 0 Apr18 ? 00:00:00 [kblockd/0]
root 39 2 0 Apr18 ? 00:00:00 [kblockd/1]
root 40 2 0 Apr18 ? 00:00:00 [kblockd/2]
root 41 2 0 Apr18 ? 00:00:00 [kblockd/3]
root 42 2 0 Apr18 ? 00:00:00 [kblockd/4]
root 43 2 0 Apr18 ? 00:00:00 [kblockd/5]
root 44 2 0 Apr18 ? 00:00:00 [kacpid]
root 45 2 0 Apr18 ? 00:00:00 [kacpi_notify]
root 46 2 0 Apr18 ? 00:00:00 [kacpi_hotplug]
root 47 2 0 Apr18 ? 00:00:00 [ata/0]
root 48 2 0 Apr18 ? 00:00:00 [ata/1]
root 49 2 0 Apr18 ? 00:00:00 [ata/2]
root 50 2 0 Apr18 ? 00:00:00 [ata/3]
root 51 2 0 Apr18 ? 00:00:00 [ata/4]
root 52 2 0 Apr18 ? 00:00:00 [ata/5]
从上面,美国可以看到,很多内核进程是针对每个cpu-core - 包括ksoftirqd。看看linux内核文档,网络驱动程序正在使用ksoftirqd来实现发送数据。所以这是CPU核心级别的并行化。
在网卡上有多个“通道” - 尤其是高速网卡。所有这些都可以同时处理数据的接收和传输 - 再次在网卡级别进行并行化。例如:
http://www.colfaxdirect.com/store/pc/viewPrd.asp?idproduct=230&idcategory=0
(寻找 “多通道”)。
但是,当它到达以太网线,因为他们都共享相同的线.....在线级别的序列化是必要的。但是接线的带宽通常要比CPU或以太网卡的处理速率高很多。
- 1. 并行化IO Bound(网络)ForEach循环
- 2. 网络端口IO
- 3. haskell网络io hgetline
- 4. 如何序列化/反序列化的pybrain网络?
- 5. Android/Java慢速网络IO
- 6. 网络流二进制序列化
- 7. Java网络对象序列化
- 8. 升压序列化和文件IO是
- 9. 提升序列化IO错误
- 10. 如何在android Volley中优化网络队列吗? (Volley Google IO 2013)
- 11. 使用QT网络进行序列化并使用Boost进行反序列化
- 12. 自定义网络库和序列化VS默认序列化和RMI
- 13. ErrorsMetricbeat和collectd监控网络IO
- 14. C#异步网络IO和OutOfMemoryException
- 15. 如何模拟IO /网络类?
- 16. Perl IO :: Socket :: SSL:connect:网络无法访问
- 17. 使用凭证的网络IO
- 18. 可观察网络IO解析
- 19. Protobuf网络根级别列表序列化参考
- 20. 反序列化列表<T>在网络流问题
- 21. 从网络排序列表
- 22. C#中的对象序列化和网络编程
- 23. 将java encog网络序列化到数据库
- 24. 序列化rx-java通过网络观察
- 25. 跨变速网络的序列化延迟
- 26. Xamarin其他网络服务不反序列化
- 27. 跨网络的Java序列化数据完整性
- 28. 对象到网络序列化 - 与现有的协议
- 29. 网络传输的高效(空间)序列化
- 30. 反序列化JSON到网络API控制器字典
您是否看到网线中的导体数量? – Joe 2010-01-24 10:46:47
这个问题可以有多重含义。你是指物理I/O还是软件API? – slebetman 2010-01-24 12:03:49