root@stock:~# df -k
Filesystem                        1K-blocks     Used Available Use% Mounted on
udev                                7851772        0   7851772   0% /dev
tmpfs                               1585980     1380   1584600   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 205375464 11664192 183209128   6% /
tmpfs                               7929888        0   7929888   0% /dev/shm
tmpfs                                  5120        0      5120   0% /run/lock
tmpfs                               7929888        0   7929888   0% /sys/fs/cgroup
/dev/loop0                            56832    56832         0 100% /snap/core18/2128
/dev/nvme0n1p2                       999320   109516    820992  12% /boot
/dev/nvme0n1p1                       523248     5356    517892   2% /boot/efi
/dev/loop1                            72064    72064         0 100% /snap/lxd/21029
/dev/loop2                            50560    50560         0 100% /snap/snapd/24792
/dev/loop3                            65408    65408         0 100% /snap/core20/2599
/dev/loop4                            94208    94208         0 100% /snap/lxd/32662
tmpfs                               1585976        0   1585976   0% /run/user/1000
root@stock:~#

df -k 출력에서 Use%가 100%로 표시된 항목이 여럿 보이지만, 걱정할 필요 없는 경우가 대부분입니다.


✅ 요약: 100%인 부분은 대부분 문제가 없습니다

🔍 어떤 항목이 100%인가요?

/dev/loop0    → /snap/core18/2128
/dev/loop1    → /snap/lxd/21029
/dev/loop2    → /snap/snapd/24792
/dev/loop3    → /snap/core20/2599
/dev/loop4    → /snap/lxd/32662

이들은 모두 /snap/ 아래에 마운트된 read-only squashfs 이미지입니다.


📌 Snap 패키지의 특징

  • Ubuntu에서 사용하는 snap 패키지는 .snap 이미지 파일을 loopback 디바이스로 마운트하여 사용합니다.
  • 이 이미지들은 읽기 전용(RO) 이며, 패키지마다 고정된 크기의 squashfs 파일로 되어 있기 때문에 항상 Use% = 100%로 나옵니다.
  • 용량이 가득 찬 게 아니라, 전체 용량이 이미 사용 가능한 데이터로 차있다는 뜻입니다.

✅ 신경 써야 할 것은 무엇인가요?

아래 항목의 사용률이 높으면 주의가 필요합니다:

  • / → /dev/mapper/ubuntu--vg-ubuntu--lv: 현재 6% 사용 (정상)
  • /boot, /boot/efi: 12%, 2% (정상)
  • /home 파티션이 있다면 그것도 확인 필요

✅ 결론

항목상태
/snap/... loop 장치 100% 🔵 정상, 문제 없음
/ 루트 파일시스템 6% ✅ 넉넉한 상태
시스템 전체 🔄 모니터링만 하면 됨

인코딩을 UTF-8로 변환 (권장)

한글이 잘 보인다면, 다음 명령으로 UTF-8로 변환 저장:

iconv -f euc-kr -t utf-8 ReadQFutureData.c -o ReadQFutureData_utf8.c

그리고 새로 만든 파일로 작업하세요:

mv ReadQFutureData_utf8.c ReadQFutureData.c

이후 vim에서 열면 한글이 제대로 보입니다:

vim ReadQFutureData.c

적용모습)



질문)
window pc와 ubuntu pc 각각 pc를 서로 랜케이블로 연결해서 통신하려면?

답변)

Windows PC와 Ubuntu PC를 직접 랜 케이블로 연결하여 통신하려면, 다음과 같은 절차를 따르면 됩니다.


✅ 1. 케이블 확인

  • 크로스 케이블 (Cross Cable) 또는
  • Auto-MDI/MDIX 지원 랜포트가 있으면 일반 랜 케이블 (Straight Cable) 도 사용 가능

대부분의 최신 PC는 Auto-MDI/MDIX를 지원하므로 일반 랜 케이블로도 직접 연결 가능


✅ 2. 양쪽 PC에 고정 IP 설정

🔵 Windows PC 설정 방법

  1. 제어판 > 네트워크 및 공유 센터 > 어댑터 설정 변경
  2. 연결된 이더넷 어댑터 우클릭 > 속성
  3. 인터넷 프로토콜 버전 4 (TCP/IPv4) 선택 후 속성
  4. 다음과 같이 고정 IP 설정:
  5. nginx
    복사편집
    IP 주소: 192.168.1.10 서브넷 마스크: 255.255.255.0 게이트웨이: 비워도 됨
  6. 확인 → 확인 → 닫기

🔴 Ubuntu PC 설정 방법

방법 A: GUI (Ubuntu Desktop 기준)

  1. Settings > Network > Wired
  2. 톱니바퀴 아이콘 클릭
  3. IPv4 탭 선택
  4. Method를 Manual로 변경
  5. 다음과 같이 입력:
  6. makefile
    복사편집
    Address: 192.168.1.20 Netmask: 255.255.255.0 Gateway: 비워도 됨
  7. 저장 후 연결 다시 시작

방법 B: CLI (Ubuntu Server 또는 터미널)

/etc/netplan/01-netcfg.yaml 또는 /etc/netplan/*.yaml 파일 편집:

network: version: 2 ethernets: enp2s0: dhcp4: no addresses: - 192.168.1.20/24

적용:

sudo netplan apply

enp2s0는 실제 사용 중인 인터페이스 이름으로 변경 (예: eth0, ens33 등 ip a로 확인)


✅ 3. 통신 확인

Ping 테스트

  • Windows에서:
  • nginx
     
    ping 192.168.1.20
  • Ubuntu에서:
  • nginx
     
    ping 192.168.1.10

파일 공유나 ssh 등도 사용 가능

  • Windows ↔ Ubuntu 간 파일 전송은 scp, ftp, samba 등 활용
  • ssh를 통해 원격 접속도 가능

✅ 추가 팁

  • 방화벽이나 보안 프로그램이 로컬 연결을 차단하지 않도록 예외 설정
  • 양쪽 PC에서 같은 서브넷(예: 192.168.1.0/24)으로 맞추는 것이 중요
  • 인터넷 없이 내부 통신만 하는 것이므로, 게이트웨이나 DNS는 설정하지 않아도 됩니다

 


질문)

windows pc와 ubuntu pc를 공유기를 통해서 연결했습니다. 공유기에는 인터넷은 안됩니다. windows pc에 와이파이로 인터넷 설정을 할떄에, 두개의 네트웍크가 공존합니다. 이럴떄는 어떤게 더 빠르게 작동하나요?


답변)

2. 윈도우에서 특정 네트워크만 인터넷 사용하게 하기

인터넷이 안 되는 공유기(LAN)에 "기본 게이트웨이"가 설정되어 있으면, 윈도우가 혼동할 수 있습니다.
해결 방법:
  1. 공유기(LAN) 연결 어댑터 속성 → IPv4 설정
  2. 고급 → 기본 게이트웨이 항목 삭제
    • 이렇게 하면 Windows는 해당 연결을 인터넷용이 아닌 로컬 통신용으로만 사용하게 됩니다.



Windows PC에서 두 개의 네트워크가 동시에 연결되어 있을 경우 (예:

  1. 하나는 인터넷이 되는 Wi-Fi,
  2. 다른 하나는 인터넷이 안 되는 공유기(Local Network)),
    Windows는 기본적으로 **"우선 순위"와 "라우팅 테이블"**에 따라 어떤 네트워크를 사용할지를 판단합니다.

🔍 요약: 어떤 네트워크가 더 빠르게 작동하느냐?

  • 인터넷 접속은 **"인터넷이 되는 Wi-Fi"**를 사용합니다.
  • **같은 공유기에 연결된 장비 간 통신 (예: Ubuntu PC 접속)**은 **"공유기(Local Network)"**를 사용합니다.
  • 즉, 용도에 따라 다르게 자동 선택됩니다.
    각각의 목적에 따라 빠르게 작동하는 경로를 선택합니다.

🔧 확인 및 조정 방법

1. 우선순위 확인 및 조정 (인터페이스 우선순위)

  • Windows는 기본적으로 인터페이스의 "메트릭(metric)" 값을 보고 우선순위를 결정합니다.
    메트릭 값이 낮을수록 우선순위가 높습니다.
확인 방법:
  1. cmd 열고 아래 명령 입력:여기서 각 네트워크 인터페이스의 메트릭 값게이트웨이를 확인할 수 있습니다.
  2. bash
    복사편집
    route print
조정 방법 (고급 사용자용):
  1. 제어판 → 네트워크 및 공유 센터 → 어댑터 설정 변경
  2. 해당 네트워크 우클릭 → 속성
  3. IPv4 더블클릭 → 고급
  4. 자동 메트릭 체크 해제 후, 수동으로 숫자 입력 (예: Wi-Fi는 10, 공유기 LAN은 50 등)

2. 윈도우에서 특정 네트워크만 인터넷 사용하게 하기

인터넷이 안 되는 공유기(LAN)에 "기본 게이트웨이"가 설정되어 있으면, 윈도우가 혼동할 수 있습니다.

해결 방법:
  1. 공유기(LAN) 연결 어댑터 속성 → IPv4 설정
  2. 고급 → 기본 게이트웨이 항목 삭제
    • 이렇게 하면 Windows는 해당 연결을 인터넷용이 아닌 로컬 통신용으로만 사용하게 됩니다.

📌 결론

  • Windows는 자동으로 목적에 따라 더 빠르고 적절한 네트워크 경로를 선택합니다.
  • Ubuntu PC와 통신하려면 공유기 쪽 로컬 네트워크를 사용하고,
  • 인터넷 접속은 Wi-Fi(인터넷 연결된 쪽)를 사용합니다.
  • 다만 네트워크 충돌이나 지연이 있다면, 위의 방법을 통해 우선순위와 라우팅을 조정할 수 있습니다.

질문)
종목정보가 파생을 합치면, 만개가 넘어가는데, 세마포어를 활용시에 더 복잡해지는 느낌입니다. lock_flag를 사용해서 코딩하는게 낫지 않을까요?

답변)

종목 수가 10,000개 이상이 된다면, 말씀하신 것처럼 세마포어 방식은 시스템적으로나 구현 측면에서 꽤 무겁고 복잡해질 수 있습니다.


✅ 간단한 결론부터

네, 이런 상황에서는 lock_flag 방식이 더 적절하고 효율적입니다.
특히 데이터 충돌 위험이 낮거나, 충돌이 발생하더라도 치명적이지 않다면 세마포어는 오버엔지니어링일 수 있습니다.


✅ 비교: 세마포어 vs lock_flag

항목System V 세마포어lock_flag 방식
동기화 정확성 커널 수준 동기화 → 매우 강력 사용자 수준 플래그 → race 가능
구현 복잡도 semget, semctl, semop 필요, 키 관리 필요 단순한 if, set
리소스 사용 세마포어 객체 최대 개수(기본 128~512) 제한 있음 메모리만 사용
속도 상대적으로 느림 (커널 트랩 발생) 빠름 (메모리만 접근)
적용 대상 충돌 가능성이 높거나, 다중 프로세스에서 반드시 동기화해야 하는 경우 충돌이 드물거나 처리 순서에 민감하지 않은 경우
 

✅ 현실 적용 시 고려 기준

질문lock_flag가 적합한 경우
데이터 충돌 가능성이 얼마나 되나요? 낮음 (예: 체결 데이터는 주기적으로 갱신되고, 읽기만 많음)
데이터 접근자는 단일 프로세스인가요? 예 (또는 적은 수의 컨트롤된 프로세스)
충돌이 발생해도 복구 가능한가요? 예 (예: 다음 틱에 다시 수신 가능)
성능이 중요한가요? 매우 중요함 (매우 많은 종목을 빠르게 처리해야 함)
 

✅ 대안: "가벼운 스핀락" 형태의 lock_flag 개선안

만약 lock_flag를 좀 더 정교하게 쓰고 싶다면:

c
복사편집
while (__sync_lock_test_and_set(&ksejongp->lock_flag, 1)) { // busy wait 또는 usleep(1); } // → 작업 수행 ... __sync_lock_release(&ksejongp->lock_flag);

이런 식으로 간단한 atomic spinlock으로도 처리할 수 있습니다.
단, lock_flag는 volatile int 또는 char가 되어야 하고, GCC 내장 함수 등을 활용해야 합니다.


✅ 결론

10,000개 이상의 종목이라면:

  • 세마포어는 리소스/성능/복잡도 측면에서 비효율
  • lock_flag 방식이 현실적이고 관리가 쉬움
  • 필요하다면 lock_flag에 atomic 연산만 약간 추가해도 동기화 수준은 충분함

✅ 권장 방향

현재 구조 유지하면서, lock_flag + 필요 시 atomic 연산을 통한 가벼운 동기화 → 가장 실용적

질문)
명령 프롬프트 (관리자 권한)에서 아래 명령으로 현재 라우팅 테이블을 확인:(route print)

답변)

공유기 LAN과 Wi-Fi에 동시에 연결된 상태의 route print 결과를 보면, 인터넷 속도가 느려지는 원인이 분명히 드러납니다.


✅ 현재 네트워크 상태 분석

📌 기본 경로 (0.0.0.0)가 두 개 존재합니다:

네트워크 대상게이트웨이인터페이스메트릭
0.0.0.0 192.168.199.86 192.168.199.49 → 유선 LAN (Ubuntu) 55 (❌ 문제)
0.0.0.0 192.168.0.1 192.168.0.3 → Wi-Fi (인터넷) 35 (✅ 정답)
 

문제 요약:

  • LAN(공유기)를 통해 연결된 Ubuntu 네트워크가 우선순위 높게 잡혀 있음 (메트릭 55 < 35).
  • 따라서 Windows는 기본적으로 Ubuntu 쪽으로 인터넷 요청을 시도, 하지만 Ubuntu에는 인터넷이 없으므로 연결 지연 발생.

✅ 해결 방법: 잘못된 기본 경로 제거 또는 우선순위 조정

🛠️ 방법 1: 잘못된 기본 경로 제거

명령 프롬프트 (관리자 권한)에서 다음 실행:

 

route delete 0.0.0.0 if 9
  • if 9은 인터페이스 목록에서 유선 LAN (Ubuntu 연결된 NIC)의 번호입니다.
  • Realtek PCIe GbE Family Controller가 interface 9임

➡️ 이렇게 하면 기본 게이트웨이가 Wi-Fi만 남아 인터넷 경로가 명확해집니다.


🛠️ 방법 2: Ethernet 어댑터에 기본 게이트웨이 제거 (영구 설정)

  1. ncpa.cpl 실행
  2. "이더넷" (Ubuntu 연결된 인터페이스) 우클릭 → 속성
  3. 인터넷 프로토콜 버전 4 (TCP/IPv4) 선택 → 속성
  4. 기본 게이트웨이 항목을 비움
    • IP 주소: 192.168.199.x
    • 서브넷 마스크: 255.255.255.0
    • 기본 게이트웨이: 없음

➡️ 이러면 Windows는 Ubuntu 쪽으로 인터넷을 시도하지 않게 됨


💡 보충 팁: 우선순위(메트릭) 수동 설정

  • Wi-Fi 인터페이스에 메트릭 값을 10 이하로 낮게,
  • Ethernet 인터페이스에는 50 이상으로 높게 설정하면 자동으로 우선순위가 잡힙니다.

(이미 설명드린 인터페이스 메트릭 수동 설정 방식 참조)


✅ 정리

항목내용
문제 Windows가 인터넷을 Ubuntu 연결 LAN으로 보내려고 해서 느려짐
원인 기본 게이트웨이(0.0.0.0)가 두 개 존재하고, 잘못된 경로가 우선됨
해결 route delete 0.0.0.0 if 9 또는 Ethernet에서 기본 게이트웨이 제거
보완 Wi-Fi 우선순위(메트릭 낮게), Ethernet은 높게 조정

질문)
windows pc 한대와 ubuntu pc한대를 공유기에 각각 연결해서 서로 telnet 연결을 이용중입니다. 인터넷을 하기위해서 windows에 와이파이연결을 했는데 평소보다 느리다면, 어떤 조치를 하면 인터넷을 빠르게 할수 있을까요?

답변)

Windows PC에서 인터넷을 하기 위해 Wi-Fi에 연결했는데, Ubuntu PC와 Telnet으로 연결된 상태에서 인터넷 속도가 느려졌다면, 다음과 같은 문제 가능성과 해결책을 점검해보세요.


✅ 원인 요약

  1. Windows가 여러 네트워크를 동시에 사용 중 (공유기 LAN + Wi-Fi)
  2. 라우팅 우선순위(Network Metric) 때문에 인터넷이 LAN으로 빠져나가려다 실패
  3. DNS 설정 또는 충돌
  4. Wi-Fi 신호 세기 자체가 약함

✅ 1. 네트워크 우선순위 확인 및 수정

Windows는 여러 네트워크가 동시에 연결되면 우선순위(metric) 에 따라 어느 경로로 트래픽을 보낼지 결정합니다.

🛠️ 조치 방법: Wi-Fi 네트워크 우선순위 높이기

  1. Windows 검색 → ncpa.cpl → 네트워크 연결 창 열기
  2. Wi-Fi 어댑터 → 우클릭 → 속성
  3. 인터넷 프로토콜 버전 4(TCP/IPv4) → 선택 후 속성
  4. 하단의 고급 클릭
  5. 자동 메트릭 체크 해제인터페이스 메트릭 값을 입력:
    • Wi-Fi에 낮은 숫자 입력 (예: 10) → 높은 우선순위
    • 이더넷(LAN)은 높은 숫자 (예: 50) 로 설정

✅ 2. 기본 게이트웨이 설정 확인

공유기에 LAN으로 연결된 Ubuntu 쪽은 인터넷이 없으므로, Windows가 그쪽을 인터넷으로 착각하면 안 됩니다.

🔧 조치 방법:

  1. ncpa.cpl → Ethernet 어댑터 (Ubuntu 연결된 LAN) → 속성
  2. 인터넷 프로토콜 버전 4(TCP/IPv4) → 속성
  3. 기본 게이트웨이 항목이 비어 있는지 확인
    • 비어 있지 않다면 지워야 함
    • 기본 게이트웨이가 있으면 인터넷 라우팅 시도하게 되어 느려짐

✅ 3. 라우팅 테이블 수동 정리 (고급)

명령 프롬프트 (관리자 권한)에서 아래 명령으로 현재 라우팅 테이블을 확인:

cmd
복사편집
route print
  • Wi-Fi 쪽 경로가 0.0.0.0 (기본 경로)로 우선 적용되는지 확인
  • 만약 Ethernet 쪽이 먼저라면 다음 명령으로 삭제:
c
복사편집
route delete 0.0.0.0 IF [인터페이스 번호]

(인터페이스 번호는 route print 명령으로 확인 가능)


✅ 4. DNS 서버 수동 설정

속도가 느려지는 원인이 DNS 지연이라면 DNS 서버를 빠른 걸로 고정하면 효과가 있습니다.

추천 DNS

  • Google DNS: 8.8.8.8, 8.8.4.4
  • Cloudflare DNS: 1.1.1.1, 1.0.0.1

설정 방법

  1. ncpa.cpl → Wi-Fi 어댑터 → 속성
  2. TCP/IPv4 → 속성
  3. 하단의 DNS 서버 수동 설정:
yaml
복사편집
기본 DNS: 8.8.8.8 보조 DNS: 8.8.4.4

✅ 5. Wi-Fi 품질 점검

  • 공유기와의 거리, 장애물, 채널 간섭 등의 원인도 확인하세요.
  • Wi-Fi 분석기 앱(휴대폰)이나 Windows의 netsh wlan show interfaces 명령으로 신호 세기 확인 가능

✅ 요약 조치 순서

단계조치 내용
1 Ethernet (Ubuntu 연결된 LAN)에 기본 게이트웨이 제거
2 Wi-Fi 어댑터에 낮은 인터페이스 메트릭 설정
3 DNS 서버를 Google/Cloudflare로 변경
4 Wi-Fi 신호 품질 확인 및 공유기 위치 조정
5 (고급) route print로 라우팅 테이블 정리
 

원하시면 현재 네트워크 상태 캡처(ipconfig, route print)해 주시면 분석도 도와드릴 수 있습니다.

✅ 1. Microsoft 패키지 저장소 등록 (정확하게 해야 함)

wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

예: Ubuntu 22.04인 경우, 자동으로 https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb 를 받습니다.


✅ 2. APT 업데이트

 
sudo apt update

저장소 등록 후 꼭 apt update 를 다시 해줘야 새로운 패키지를 인식합니다.


✅ 3. 필수 구성 요소 설치

bash
복사편집
sudo apt install -y apt-transport-https

✅ 4. dotnet SDK 설치 (예: .NET 8 SDK)

bash
복사편집
sudo apt install -y dotnet-sdk-8.0

만약 .NET 7이 필요하면 dotnet-sdk-7.0으로 바꾸면 됩니다.


🔍 설치 확인

bash
복사편집
dotnet --version

예:

복사편집
8.0.100

+ Recent posts