mac wifi 속도 느려짐

macOS Mojave 10.14.2  사용중인데, 이상하게 wifi 속도가 느려지는 이슈가 있다.
맥을 리부팅하면 200 Mbit/s 이상의 속도가 나오다 어느정도 시간이 지나면
100 MBit/s
10 MBits/s
5 MBit/s
로 계속 떨어지고 결국에는 인터넷 서핑을 하기 힘들정도가 된다.

airport(wi-fi) 상태 정보를 확인해보면

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I

RSSI(Received Signal Strength Indicator) 는 수신강도로 음수로 표시되며 값이 높을수록(0에 가까울수록) 감도가 좋다. -80  보다 크면 양호

예) -60 이 -80 보다 수신강도가 좋다.

36 채널은 5GHz를 사용한다.
참고 https://en.wikipedia.org/wiki/List_of_WLAN_channels

     agrCtlRSSI: -60
     agrExtRSSI: 0
    agrCtlNoise: -96
    agrExtNoise: 0
          state: running
        op mode: station
     lastTxRate: 540
        maxRate: 600
lastAssocStatus: 0
    802.11 auth: open
      link auth: wpa2
          BSSID: x:xx:xx:xx:xx:xx
           SSID: ysoftman_wifi
            MCS: 0
        channel: 36,1

option 키를 누른상태에서 wifi 아이콘 클릭해 세부정보를 보면
5GHz, 802.11ac, 400Mbps로 정상적으로 보인다.


그런데 network utility.app 으로 wifi 보면 링크 속도가 낮게 보인다.


다음 명령으로 링크속도가 어떻게 설정되어 있는지 확인해보면 자동설정이라고 되어 있다.
ifconfig en0 | grep media
media: autoselect

같은 네트워크에서 갤럭시폰 링크 속도(전화에서 *123456# -> wifi 선택하면 보인다.)는 1Gbps 를 지원하는 802.11ac 네트워크로 실제 400Mbps 이다.


cron 으로 speedtest 매시간 돌려본 결과다.
맥북을 리부팅하면 속도가 잘 나오지만 시간이 갈수록 속도가 떨어진다.
Mon Jan 28 13:00:00 KST 2019 13:00  up  1:53, 3 users, load averages: 3.34 2.87 2.52 Download: 270.22 Mbit/s
Mon Jan 28 14:00:00 KST 2019 14:00  up  2:53, 4 users, load averages: 1.79 1.83 1.80 Download: 102.31 Mbit/s
Mon Jan 28 15:00:00 KST 2019 15:00  up  3:53, 3 users, load averages: 1.41 1.61 1.69 Download: 128.40 Mbit/s
Mon Jan 28 16:00:00 KST 2019 16:00  up  4:53, 4 users, load averages: 2.38 2.01 1.88 Download: 94.41 Mbit/s
... 생략 ...
Thu Feb  7 07:00:00 KST 2019 7:00  up 7 days, 18:01, 3 users, load averages: 1.45 1.57 1.59 Download: 1.77 Mbit/s
Thu Feb  7 08:00:00 KST 2019 8:00  up 7 days, 19:01, 3 users, load averages: 1.59 1.57 1.55 Download: 0.42 Mbit/s

wifi 는 최신 암호화 방식인 WPA2PSK-AES 를 사용해야 한다.
AES 를 뺀 나머지(WEP64, WEP128, TKIP)는 모두 금방 해킹된다.
https://www.bodnara.co.kr/bbs/article.html?num=106786

그리고 TKIP 사용하면 속도도 54Mbps 로 제한된다.
https://www.intel.co.kr/content/www/kr/ko/support/articles/000006697/network-and-i-o/wireless-networking.html

하지만 기업용 WPA2보안은 기본 AES암호화를 사용해 속도는 잘나와야 한다.
나와 같은 문제를 격어 apple 문의한 사람이 있는데, 아직 답이 없다.
https://discussions.apple.com/thread/8562488

wifi explorer lite 앱으로 주파수 상태를 양호한 편으로 큰 문제는 없는것 같다.


[시도1]
아무리 찾아봐도 특별한 원인은 찾을 수 없었는데, 사용자 위치 정보 wifi 설정으로 나아졌다는 글을 보고 설정을 변경해봤다.

참고로 저렇게 설정을 꺼두면 wifi 로 내위치를 확인하지 못한다.

시스템 환경 설정 -> 보안 및 개인정보 보호 -> 위치 서비스 -> 시스템 서비스 -> 세부사항 -> Wi-Fi  네트워크 비활성화 후 wifi 를 끄고 다시 시작한다.


위 설정후 처음에는 속도가 높았지만 점점 속도가 느려서 해결책이 되지 못했다.

[시도2]
다음 위치의 네트웍 관련 설정 파일들을 삭제하고 재부팅한다.
cd /Library/Preferences/SystemConfiguration
sudo rm -f
NetworkInterfaces.plist
com.apple.airport.preferences.plist
com.apple.wifi.message-tracer.plist
preferences.plist

하루정도 지나면 여전히 속도가 느려진다.

[시도3]
sysctl.conf 의 네트워크 관련 설정을 해보자.
https://rolande.wordpress.com/2010/12/30/performance-tuning-the-network-stack-on-mac-osx-10-6/
http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/netperf/tuning-tcp.shtml#osx

현재 커널 tcp 설정 확인해 보면 send/recv 메모리 최대가 2MiB로 너무 작게 설정되어 있다. 참고로 리눅스와 sysctl 변수 이름과 다르다.
sysctl -a | grep -E "nmbclusters|maxsockbuf|tcp.*space|tcp.auto|tcp.win"
kern.ipc.maxsockbuf: 8388608
kern.ipc.nmbclusters: 65536
net.inet.tcp.sendspace: 131072
net.inet.tcp.recvspace: 131072
net.inet.tcp.autorcvbufmax: 2097152
net.inet.tcp.autosndbufinc: 8192
net.inet.tcp.autosndbufmax: 2097152
net.inet.tcp.win_scale_factor: 3

nmbclusters 는 네트워크에 사용되는 버퍼(메모리) 클러스터로 클러스터 1개가 약 2KiB 를 차지한다.

64MiB 를 메모리를 사용하려면 (1024*1024*64)/(1024*2) = 32768 개를 설정한다.

위 설정을 보면 이미 65536 으로 128MiB 로 설정되어 있다.
참고 https://wiki.freebsd.org/SystemTuning

nmbclusters 는 바로 적용할 수 없어 /etc/sysctl.conf 에서 수정해야 한다.
maxsockbuf 는 nmbclusters 이상 넘을 수 없다.

다음과 같이 64MiB 로 늘리려고 하면 다음과 같이 에러가 발생한다.

sudo sysctl -w kern.ipc.maxsockbuf=67108864
sysctl: kern.ipc.maxsockbuf=33554432: Result too large

sendspace, recvspace 은 maxsockbuf 이상 넘을 수 없다.

sudo sysctl -w net.inet.tcp.sendspace=4194304
sudo sysctl -w net.inet.tcp.recvspace=4194304

32MiB=33554432 또는 64MiB=67108864

sudo sysctl -w net.inet.tcp.autorcvbufmax=67108864
sudo sysctl -w net.inet.tcp.autosndbufmax=67108864

win_scale_factor(윈도우 크기 배수)도 최근 8배까지 지원되니 바꿔준다.
sudo sysctl -w net.inet.tcp.win_scale_factor=8

win_scale_factor rfc1323(TCP high performace) 스펙 추가사항이라

다음과 같이 활성화 해야 되지만 mojave 에선 더이상 설정할 수 없는것 같다.
sudo sysctl -w net.inet.tcp.rfc1323=1
sysctl: unknown oid 'net.inet.tcp.rfc1323'

위 내용 정리해서, sysctl -w 은 shutdown 하면 사라지기 때문에 /etc/sysctl.conf 를 수정하자.
kern.ipc.nmbclusters=65536
kern.ipc.maxsockbuf=67108864
net.inet.tcp.sendspace=4194304
net.inet.tcp.recvspace=4194304
net.inet.tcp.autorcvbufmax=67108864
net.inet.tcp.autosndbufmax=67108864
net.inet.tcp.win_scale_factor=8

참고로 netstat -m 으로 네트워크 메모리 사용현황을 파악할 수 있는데, 속도가 100Mbps 정도 나왔을때 다음과 같이 25% 정도를 네트워크에 사용하고 있다.
watch -n 1 'netstat -m'
814/1883 mbufs in use:
812 mbufs allocated to data
2 mbufs allocated to packet tags
1069 mbufs allocated to caches
787/1912 mbuf 2KB clusters in use
0/645 mbuf 4KB clusters in use
0/0 mbuf 16KB clusters in use
7156 KB allocated to network (24.8% in use)
0 KB returned to the system
0 requests for memory denied
0 requests for memory delayed
0 calls to drain routines

하루정도 지나면 여전히 속도가 느려진다.

[시도4]
블루투스가 영향이 있을까 해서 블루투스 비활성화 해봤지만 영향이 없음

[시도5]
wifi 및 시스템 전체 로깅을 실시간으로 볼 수 있다.

커널쪽에서 메시지만 골라 보면
log stream | grep kernel

다음과 같은 메시지가 주기적으로 나타난다.
kernel: (PulseSecureFirewall) PulseSecureDriver - IpPacketCookiesManager.cpp:226 - INFO Deleting expired cookies

pulse app 종료를 해도 계속 나타나  pulse app 을 지웠다.
지금까지는 꼭 재부팅을 해야 네트워크 속도가 올라갔는데, wifi만 끄고 켰는데 속도가 꽤 올라간다.
흠, 몇일 지켜봤는데 속도 저하는 발생하지 않고 있다.
pulse 9.0.2 버전에서 발생했고 이슈를 회사에 전달했고, 문제가 해결된 pulse 9.1 이상을 사용하고 있다.

참고로 pulse 를 완전 제거 후 장시간 맥북을 켜두면 wifi 속도가 현저하게 떨어지지 않지만 2~30mbps 정도로 유지되는 경우 wifi 를 컸다키면 다시 속도가 100mbps 이상으로 올라간다.

comments:

댓글 쓰기