linux 作为 samba server
基本配置
nix 作为 server
nix 参考: https://gist.github.com/vy-let/a030c1079f09ecae4135aebf1e121ea6
fedora 作为 server
将 fedora 的文件共享给 windows
sudo dnf install samba
sudo systemctl enable smb --now
sudo systemctl status smb
sudo smbpasswd -a martins3
在 /etc/samba/smb.conf 的结尾地方添加:
[public]
path = /home/martins3/data/
browseable = yes
read only = no
guest ok = yes
windows 中的配置
在 windows 虚拟机中,打开文件浏览器, 右键 网络,选择 映射网络驱动器,
在文件夹中填写路径 \\10.0.0.2\public 即可。
注意,这里的 public 和配置文件中对应的,也就是 [public] 的配置。
如果遇到需要密码的时候,但是密码不对
sudo smbpasswd -a martins3
在 windows 那一侧使用 martins3 和新设置的密码来登录。
性能测试
让从 windows 拷贝大文件到 linux 上
可以观测到的 thread:
4 S root 4150 1 0 80 0 - 11593 - Sep14 ? 00:00:00 /nix/store/kj8qz24gbr2hz5my4k39gzzv85ys2lk3-samba-4.20.1/sbin/smbd --foreground --no-process-group
5 S root 4259 4150 0 80 0 - 11060 - Sep14 ? 00:00:00 smbd: notifyd .
1 S root 4260 4150 0 80 0 - 11064 - Sep14 ? 00:00:00 smbd: cleanupd .
5 S martins3 2123125 4150 0 80 0 - 21147 - Sep23 ? 00:00:10 smbd: client [10.0.0.8]
🧀 pstree 4150 -p
smbd(4150)─┬─smbd-cleanupd(4260)
├─smbd-notifyd(4259)
└─smbd[10.0.0.8](2123125)─┬─{smbd[10.0.0.8]}(2720888)
├─{smbd[10.0.0.8]}(2720889)
├─{smbd[10.0.0.8]}(2725297)
├─{smbd[10.0.0.8]}(2726043)
├─{smbd[10.0.0.8]}(2726044)
├─{smbd[10.0.0.8]}(2726045)
├─{smbd[10.0.0.8]}(2727630)
└─{smbd[10.0.0.8]}(2727631)
对于 smbd: client [10.0.0.8] 进行 perf ,可以看到:
sudo perf record –pid 2123125 -g – sleep 60
有趣,这个
- 67.04% 0.00% smbd[10.0.0.8] [k] entry_SYSCALL_64_after_hwframe ◆
entry_SYSCALL_64_after_hwframe ▒
- do_syscall_64 ▒
- 33.74% __sys_recvmsg ▒
- 32.99% ___sys_recvmsg ▒
- 32.77% ____sys_recvmsg ▒
- sock_recvmsg ▒
- 32.39% inet_recvmsg ▒
- tcp_recvmsg ▒
- 32.28% tcp_recvmsg_locked ▒
- 22.16% skb_copy_datagram_iter ▒
- __skb_datagram_iter ▒
10.58% _copy_to_iter ▒
- 9.90% __skb_datagram_iter ▒
8.88% _copy_to_iter ▒
- 0.60% simple_copy_to_iter ▒
__check_object_size ▒
- 0.87% simple_copy_to_iter ▒
__check_object_size ▒
- 9.13% __tcp_transmit_skb ▒
- __ip_queue_xmit ▒
- 5.13% ip_finish_output2 ▒
- __dev_queue_xmit ▒
- 4.80% dev_hard_start_xmit ▒
- internal_dev_xmit ▒
- ovs_vport_receive ▒
- 4.12% ovs_dp_process_packet ▒
- 3.22% ovs_execute_actions ▒
- do_execute_actions ▒
- 2.89% __dev_queue_xmit ▒
- 2.35% sch_direct_xmit ▒
- 1.26% dev_hard_start_xmit ▒
- 1.21% rtl8169_start_xmit ▒
0.57% rtl8169_tx_map ▒
0.54% __skb_pad ▒
0.88% _raw_spin_lock ▒
- 0.76% ovs_flow_tbl_lookup_stats ▒
- flow_lookup.isra.0 ▒
masked_flow_lookup ▒
0.50% ovs_flow_key_extract ▒
- 1.64% ip_local_out ▒
- __ip_local_out ▒
- 1.22% nf_hook_slow ▒
0.99% nf_conntrack_update ▒
- 1.23% ip_finish_output ▒
- __cgroup_bpf_run_filter_skb ▒
__bpf_prog_run_save_cb
- 26.12% __x64_sys_pwrite64 ▒
- vfs_write ▒
- 26.01% ext4_buffered_write_iter ▒
- 25.78% generic_perform_write ▒
- 11.14% ext4_da_write_begin ▒
- 5.73% __filemap_get_folio ▒
- 3.00% filemap_add_folio ▒
1.37% __filemap_add_folio ▒
0.83% __mem_cgroup_charge ▒
- 0.69% folio_add_lru ▒
- folio_batch_move_lru ▒
lru_add_fn ▒
- 1.89% folio_alloc_noprof ▒
- alloc_pages_mpol_noprof ▒
- 1.52% __alloc_pages_noprof ▒
0.83% get_page_from_freelist ▒
0.54% filemap_get_entry ▒
- 5.15% ext4_block_write_begin ▒
- 2.66% ext4_da_get_block_prep ▒
- 0.85% ext4_da_reserve_space ▒
0.51% __dquot_alloc_space ▒
0.76% ext4_es_insert_delayed_block ▒
- 2.33% create_empty_buffers ▒
- 1.38% folio_alloc_buffers ▒
- 1.23% alloc_buffer_head ▒
kmem_cache_alloc_noprof ▒
10.92% copy_page_from_iter_atomic ▒
- 2.10% ext4_da_write_end ▒
- 1.96% block_write_end ▒
- __block_commit_write ▒
- 1.11% mark_buffer_dirty ▒
0.84% __folio_mark_dirty ▒
- 1.21% fault_in_iov_iter_readable ▒
fault_in_readable ▒
- 4.95% __x64_sys_epoll_wait ▒
- 4.78% do_epoll_wait ▒
- 3.43% schedule_hrtimeout_range_clock ▒
- 3.09% schedule ▒
- __schedule
- 1.25% dequeue_task_fair ▒
- dequeue_entity ▒
0.52% update_curr ▒
0.53% ep_item_poll.isra.0 ▒
0.67% syscall_exit_to_user_mode ▒
- 0.58% __sys_sendmsg ▒
___sys_sendmsg
这么看,smbd 完全是用户态的啊!但是我记得 kernel 中是有这些东西的啊!
本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。