Saya memiliki Acer Aspire R1600-U910H dengan adaptor jaringan nForce gigabit. Throughput TCP maksimumnya sekitar 25MB / s, dan tampaknya dibatasi oleh single core Intel Atom 230; ketika throughput maksimum tercapai, penggunaan CPU adalah sekitar 50% -60%, yang sesuai dengan pemanfaatan penuh mengingat ini adalah CPU berkemampuan Hyper-threading.
Masalah yang sama terjadi pada Windows XP dan Ubuntu 8.04. Di Windows, saya telah menginstal driver chipset nForce terbaru, fitur hemat daya yang dinonaktifkan, dan mengaktifkan checksum offload. Di Linux, driver default memiliki checksum offload diaktifkan. Tidak ada driver Linux yang tersedia di situs web Nvidia.
ethtool -k eth0
menunjukkan bahwa checksum offload diaktifkan:
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp segmentation offload: on
udp fragmentation offload: off
generic segmentation offload: off
Berikut ini adalah output powertop
saat jaringan idle:
Wakeups-from-idle per second : 61.9 interval: 10.0s
no ACPI power usage estimate available
Top causes for wakeups:
90.9% (101.3) <interrupt> : eth0
4.5% ( 5.0) iftop : schedule_timeout (process_timeout)
1.8% ( 2.0) <kernel core> : clocksource_register (clocksource_watchdog)
0.9% ( 1.0) dhcdbd : schedule_timeout (process_timeout)
0.5% ( 0.6) <kernel core> : neigh_table_init_no_netlink (neigh_periodic_timer)
Dan ketika throughput maksimum sekitar 25MB / s tercapai:
Wakeups-from-idle per second : 11175.5 interval: 10.0s
no ACPI power usage estimate available
Top causes for wakeups:
99.9% (22097.4) <interrupt> : eth0
0.0% ( 5.0) iftop : schedule_timeout (process_timeout)
0.0% ( 2.0) <kernel core> : clocksource_register (clocksource_watchdog)
0.0% ( 1.0) dhcdbd : schedule_timeout (process_timeout)
0.0% ( 0.6) <kernel core> : neigh_table_init_no_netlink (neigh_periodic_timer)
Perhatikan 20000 interupsi per detik. Mungkinkah ini penyebab penggunaan CPU yang tinggi dan throughput yang rendah? Jika demikian, bagaimana saya dapat memperbaiki situasi?
Sebagai referensi, komputer lain dalam jaringan biasanya dapat mentransfer pada 50 + MB / s tanpa masalah. Komputer dengan CPU Core 2 hanya menghasilkan 5.000 interupsi per detik saat ditransfer pada 110MB / s. Jumlah interupsi sekitar 20 kali lebih sedikit dari sistem Atom (jika interupsi skala linier dengan throughput.)
Bisakah meningkatkan ukuran jendela TCP memecahkan masalah? Apakah ini pengaturan umum di OS, atau spesifik aplikasi?
Dan sebuah pertanyaan kecil: Bagaimana saya bisa mengetahui apa yang digunakan pengemudi untuk eth0?