특정 웹 사이트를 탐색 할 때 Linux가 응답하지 않는 이유는 무엇입니까?


28

Linux 4.15를 사용하고 있는데 Google, Facebook 또는 기타 리소스가 부족한 웹 사이트를 탐색 할 때 여러 번 발생합니다. 전체 OS가 응답하지 않고 정지되고 쓸모 없게됩니다. 내가 작동하는 유일한 것은 디스크 (ext4로 포맷 된 주 시스템 파티션)이며, 대량으로 사용됩니다 (I / O 조절).

나는 팽창을 제거하기 위해 1 분 이상 기다려야하며 때로는 12 분 동안 응답하지 않아서 좌절합니다. OS가 멀티 태스킹을 잘 처리하지 못한다는 사실은 절대적으로 이상하고 용납 할 수없는 행동을 반영하는 경향이 있습니다.

이 파이어 폭스에 발생하지만 함께뿐만 아니라 어떤 을 포함하여 자바 스크립트 인터프리터 응용 프로그램을 마이크로 소프트 VSCode 또는 각-CLI ( ng serve명령)뿐만 아니라 실행의 다른 자원에 굶주린 스레드 - 등의 경우와 plantuml A로부터 매우 큰 그래프를 생성 할 때 매우 복잡한 UML 다이어그램.

오늘날 OS는 거의 움직이지 않아 나쁜 USB 포트에서 최근에 분리 된 외부 HDD (ext4 파티션 위)에 대한 데이터 복구 소프트웨어를 시작한 후 완전히 관리 할 수 ​​없게되었습니다.

그런 버기 행동의 근본 원인을 알 수 없습니다

브라우저에 많은 탭이 열려 있으며 df출력 당 94 % OS 파티션 사용량이 있습니다 .

Filesystem     1K-blocks      Used Available Use% Mounted on
udev             3964160         0   3964160   0% /dev
tmpfs             798164      3192    794972   1% /run
/dev/sda5      173466400 153224316  11407424  94% /
tmpfs            3990820     62936   3927884   2% /dev/shm
tmpfs               5120         4      5116   1% /run/lock
tmpfs            3990820         0   3990820   0% /sys/fs/cgroup
/dev/loop5           128       128         0 100% /snap/anbox-installer/24
/dev/loop2           128       128         0 100% /snap/anbox-installer/17
/dev/loop4        223616    223616         0 100% /snap/kde-frameworks-5/26
/dev/loop3         90624     90624         0 100% /snap/core/7169
/dev/loop7        223616    223616         0 100% /snap/kde-frameworks-5/25
/dev/loop8         90624     90624         0 100% /snap/core/7270
/dev/loop0         87552     87552         0 100% /snap/qownnotes/2160
/dev/loop1        241664    241664         0 100% /snap/kde-frameworks-5/27
tmpfs             798164         0    798164   0% /run/user/0
tmpfs             798164        32    798132   1% /run/user/1000
/dev/loop9         87552     87552         0 100% /snap/qownnotes/2176
/dev/sda3      188669948 187132488   1537460 100% /media/kais/DATA
/dev/sdb1       15142960   2091904  13051056  14% /media/kais/STORE N GO

하드웨어로는 다음을 사용하고 있습니다.

  1. 인텔 코어 i3 v2348M 기준 lscpu:

    Architecture:        x86_64
    CPU op-mode(s):      32-bit, 64-bit
    Byte Order:          Little Endian
    Address sizes:       36 bits physical, 48 bits virtual
    CPU(s):              4
    On-line CPU(s) list: 0-3
    Thread(s) per core:  2
    Core(s) per socket:  2
    Socket(s):           1
    NUMA node(s):        1
    Vendor ID:           GenuineIntel
    CPU family:          6
    Model:               42
    Model name:          Intel(R) Core(TM) i3-2348M CPU @ 2.30GHz
    Stepping:            7
    CPU MHz:             905.312
    CPU max MHz:         2300.0000
    CPU min MHz:         800.0000
    BogoMIPS:            4589.49
    Virtualization:      VT-x
    L1d cache:           32K
    L1i cache:           32K
    L2 cache:            256K
    L3 cache:            3072K
    NUMA node0 CPU(s):   0-3
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb pti tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm arat pln pts
    
  2. 8GB RAM (아래 htop출력 참조).

  3. 메인 보드 버스 속도 99.83MHz
  4. 500GB 내부 HDD-운영 체제의 SMART 보고서입니다.

    smartctl 6.6 2017-11-05 r4594 [x86_64-linux-4.15.0-33-generic] (local build)
    Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
    
    === START OF INFORMATION SECTION ===
    Model Family:     Western Digital Blue Mobile
    Device Model:     WDC WD5000LPVX-22V0TT0
    Serial Number:    WD-WXE1E13AAMR4
    LU WWN Device Id: 5 0014ee 25db04ba7
    Firmware Version: 01.01A01
    User Capacity:    500,107,862,016 bytes [500 GB]
    Sector Sizes:     512 bytes logical, 4096 bytes physical
    Rotation Rate:    5400 rpm
    Device is:        In smartctl database [for details use: -P show]
    ATA Version is:   ACS-2 (minor revision not indicated)
    SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
    Local Time is:    Wed Aug  7 15:52:05 2019 CET
    SMART support is: Available - device has SMART capability.
    SMART support is: Enabled
    
    === START OF READ SMART DATA SECTION ===
    SMART overall-health self-assessment test result: PASSED
    
    General SMART Values:
    Offline data collection status:  (0x00) Offline data collection activity
                        was never started.
                        Auto Offline Data Collection: Disabled.
    Self-test execution status:      (   0) The previous self-test routine completed
                        without error or no self-test has ever 
                        been run.
    Total time to complete Offline 
    data collection:        ( 8040) seconds.
    Offline data collection
    capabilities:            (0x7b) SMART execute Offline immediate.
                        Auto Offline data collection on/off support.
                        Suspend Offline collection upon new
                        command.
                        Offline surface scan supported.
                        Self-test supported.
                        Conveyance Self-test supported.
                        Selective Self-test supported.
    SMART capabilities:            (0x0003) Saves SMART data before entering
                        power-saving mode.
                        Supports SMART auto save timer.
    Error logging capability:        (0x01) Error logging supported.
                        General Purpose Logging supported.
    Short self-test routine 
    recommended polling time:    (   2) minutes.
    Extended self-test routine
    recommended polling time:    (  93) minutes.
    Conveyance self-test routine
    recommended polling time:    (   5) minutes.
    SCT capabilities:          (0x7035) SCT Status supported.
                        SCT Feature Control supported.
                        SCT Data Table supported.
    
    SMART Attributes Data Structure revision number: 16
    Vendor Specific SMART Attributes with Thresholds:
    ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
      1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       1
      3 Spin_Up_Time            0x0027   149   143   021    Pre-fail  Always       -       1541
      4 Start_Stop_Count        0x0032   057   057   000    Old_age   Always       -       43173
      5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
      7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
      9 Power_On_Hours          0x0032   083   083   000    Old_age   Always       -       12797
     10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
     11 Calibration_Retry_Count 0x0032   100   100   000    Old_age   Always       -       0
     12 Power_Cycle_Count       0x0032   091   091   000    Old_age   Always       -       9496
    191 G-Sense_Error_Rate      0x0032   001   001   000    Old_age   Always       -       250
    192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       399
    193 Load_Cycle_Count        0x0032   147   147   000    Old_age   Always       -       160989
    194 Temperature_Celsius     0x0022   101   092   000    Old_age   Always       -       42
    196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
    197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
    198 Offline_Uncorrectable   0x0030   100   253   000    Old_age   Offline      -       0
    199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
    200 Multi_Zone_Error_Rate   0x0008   100   253   000    Old_age   Offline      -       0
    
    SMART Error Log Version: 1
    No Errors Logged
    
    SMART Self-test log structure revision number 1
    No self-tests have been logged.  [To run self-tests, use: smartctl -t]
    
    SMART Selective self-test log data structure revision number 1
     SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
        1        0        0  Not_testing
        2        0        0  Not_testing
        3        0        0  Not_testing
        4        0        0  Not_testing
        5        0        0  Not_testing
    Selective self-test flags (0x0):
      After scanning selected spans, do NOT read-scan remainder of disk.
    If Selective self-test is pending on power-up, resume after 0 minute delay.
    

다음은 리소스 사용 결과입니다 htop.

  1  [|||||                    14.1%]   Tasks: 286, 1497 thr; 2 running
  2  [|||||                    13.2%]   Load average: 3.00 4.97 6.09 
  3  [|||||                    12.5%]   Uptime: 3 days, 16:12:35
  4  [|||                       9.3%]
  Mem[|||||||||||||||||||5.09G/7.61G]
  Swp[|||||||||||||||||||3.68G/4.65G]

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 7006 jvb        20   0 6640M  102M  6780 S  5.3  1.3 18:53.18 java -Xmx3072m -X
 8224 kais     20   0 4537M  771M  200M S  6.6  9.9  2h31:23 /usr/lib/firefox/
 2299 kais     20   0 2958M  184M 42912 S  5.3  2.4 13:54.41 /usr/lib/firefox/
 1216 root       20   0  519M  120M 94640 S  5.3  1.5  1h52:50 /usr/lib/xorg/Xor
28401 kais     20   0 3354M  584M  107M S  7.9  7.5 34:44.51 /usr/lib/firefox/
 8439 kais     20   0 4537M  771M  200M S  4.6  9.9 37:06.21 /usr/lib/firefox/
 8831 kais     20   0 3222M  351M 64828 R  4.0  4.5 11:19.87 /usr/lib/firefox/
 7025 jvb        20   0 6640M  102M  6780 S  0.0  1.3  0:18.34 java -Xmx3072m -X
 7027 jvb        20   0 6640M  102M  6780 S  0.0  1.3  0:18.05 java -Xmx3072m -X
 5901 kais     20   0  7492  5612  2904 R  4.0  0.1  0:00.66 htop
 5329 kais     20   0  547M 47456 38388 S  1.3  0.6  0:01.29 /usr/lib/gnome-te
13540 kais     20   0 2958M  184M 42912 S  2.0  2.4  0:06.25 /usr/lib/firefox/
16897 kais     20   0  904M 28292 18076 S  2.0  0.4 50:08.37 pavucontrol
17999 kais     20   0 2424M 29460 25380 S  1.3  0.4 52:41.73 /usr/bin/pulseaud
F1 Help  F2 Setup  F3 Search  F4 Filter  F5 Tree  F6 SortBy F7 Nice  -  F8 Nice  +  F9 Kill  F10 Quit

이것들 은 명령에 의해 생성 된 VM 통계의 결과이기도합니다 vmstat 5.

AFAIK, bloatware는 OS를 응답하지 않아야하므로 OS 작업이 프로세스를 격리하고 멀티 태스킹을 보장하기 때문에 bloatware가 문제의 근본 원인이라고 생각하거나 받아 들일 수도 없습니다.

이 문제가 OS, 하드웨어 또는 구성에 특정한 것인지 잘 모르겠습니다.

어떤 아이디어?


4
의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 . 댓글 / 채팅으로 인한 설명을 위해 필요에 따라 질문을 업데이트하십시오. 고맙습니다!
Jeff Schaller

3
시스템이 많이 바뀌고있는 것 같습니다. vmstat 5시스템이 작동하는 동안 실행할 수 있습니까? 미리 vmstat를 시작하고 정지 중에 인쇄 된 행을 게시해도됩니다. 시스템이 실제로 스왑하는 양을 나타내는 siso열을 구체적으로 찾고 있습니다. 또한 top메모리 사용량 (shift-M)별로 정렬하여 의 출력을 게시 할 수 있습니까? (또는 동등한
호프

1
파일 시스템이 거의 가득 차면 매우 느려질 수 있습니다. 이것이 ext4의 경우인지 확실하지 않습니다.
아무도

1
@Kais 두 가지를 모두 시도해보고 어떤 것이 효과가 있는지 확인하십시오. 내 스왑은 내가 준비한 것의 최대 절반까지 채워 지므로 중단되지 않습니다. 스왑 사용이 느려지는 지 여부는 사용 패턴에 따라 달라 지므로 경험이 다를 수 있습니다.
JoL

2
스왑을 완전히 비활성화하여 문제의 원인으로 디스크 스 래싱을 확인하거나 제거하십시오. 스와핑의 요점은 디스크에 사용되지 않은 페이지를 넣는 것이지만 대부분의 페이지가 실제로 사용 중이면 스와핑이 도움이되지 않습니다. 일반적인 워크로드에 10GB의 상주 페이지가 필요한 경우 8GB 시스템이 어려움을 겪습니다. 리소스 소진에 대한 해답은 워크로드를 낮추거나 리소스를 늘리는 것입니다 (이 경우 크롬을 시도하거나 물리적 메모리를 추가하십시오).
베인

답변:


27

리눅스가 왜 그렇게 반응이 없는가?

사용 가능한 RAM을 초과 커밋하면 많은 양의 스와핑이 발생하므로 확실히 그렇게 할 수 있습니다. 기계식 HDD의 임의 액세스 I / O는 읽기 / 쓰기 헤드를 이동해야하며 초당 약 100 회의 검색 만 수행 할 수 있습니다.

RAM을 "너무 많이"과도하게 사용하는 경우 Linux가 점심으로 완전히 나가는 것이 일반적입니다. 또한 스피 니 디스크와 8GB RAM이 있습니다. 메모리 누수가있는 몇 가지 소프트웨어에 문제가있었습니다. 즉, 메모리 사용량은 시간이 지남에 따라 계속 증가하고 줄어들지 않으므로 소프트웨어를 제어하는 ​​유일한 방법은 소프트웨어를 중지했다가 다시 시작하는 것입니다. 이 기간 동안의 경험을 바탕으로 3GB 이상의 스왑을 생성하는 경우 10 분 동안 지연되는 소식을 듣고 놀라지 않습니다.

3GB 이상의 스왑이있는 모든 경우에 반드시 이것이 표시되는 것은 아닙니다. 이론에 따르면 핵심 개념은 스레 싱 이라고한다 . 반면에 두 개의 서로 다른 작업 세트 사이를 전환하려고 시도하고 3GB를 스왑 및 아웃해야하는 경우 100MB / s에서 I / O 패턴을 완벽하게 최적화 할 수 있더라도 60 초 이상이 걸립니다. 실제로, I / O 패턴은 최적과는 거리가 멀다.

이 문제로 어려움을 겪은 후 스왑 공간을 이전보다 몇 배 작은 2GB로 다시 포맷했기 때문에 시스템이 깊게 스왑 할 수 없었습니다. mkswap선택적 크기 매개 변수를 사용 하므로 파티션 크기 조정을 망설이지 않아도이 작업을 수행 할 수 있습니다 .

대략적인 균형은 메모리가 부족하고 프로세스가 종료되는 것과 시스템을 오랫동안 정지 시켜서 포기하고 재부팅하는 것입니다. 4GB 스왑 파티션이 너무 큰지 모르겠습니다. 그것은 당신이하고있는 일에 달려 있습니다. 중요한 것은 디스크가 휘젓기 시작하는 시점을 감시하고 메모리 사용량을 확인한 후 그에 따라 응답하는 것입니다.

다중 프로세스 응용 프로그램의 메모리 사용량을 확인하기가 어렵습니다. 이중 계산 공유 메모리없이 프로세스 당 메모리 사용량을 확인하려면, 당신은 사용할 수 있습니다 sudo atop -R눌러 MmPSIZE 열에서와 모양을. 을 사용할 수도 있습니다 smem. smem -t -P firefox모든 파이어 폭스 프로세스의 PSS를 표시 한 다음 총 PSS가있는 행을 표시합니다. Firefox 또는 Chrome 기반 브라우저의 총 메모리 사용량을 측정하는 올바른 방법입니다. (메모리 사용량을 표시하는 브라우저 별 기능도 있지만 개별 탭이 표시됩니다).


1
의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
Jeff Schaller

ulimit프로세스 사용을 제어하려는 시도를 고려할 가치가 있습니다 (다중 프로세스 응용 프로그램에는 까다 롭지 만 도움이 될 수 있습니다).
Toby Speight

2
@TobySpeight 앱 메모리 사용을 제한하려면 cgroup을 사용해야합니다. ulimit정말 도움이되지 않습니다.
sourcejedi

예, 더 나은 선택 일 것입니다. 어쨌든 대답에서 언급 할 가치가 있습니다.
Toby Speight

2
The important thing is to watch out for when the disk starts churning, check your memory usage, and respond accordingly.<-또는 GUI를 사용하는 경우 남은 여유 RAM 양을 확인하는 간단한 스크립트 (1 분 정도)를 실행하는 crontab을 만들어 경고합니다. 나는 Linux Mint를 위해 나 자신을 만들었고, 그것으로부터 꽤 많이 배웠다. 시도하고 놀 수있는 것입니다.
이스마엘 미겔

5

AFAIK, bloatware는 OS를 응답하지 않아야하므로 bloatware가 문제의 근본 원인이라고 생각하거나 받아들이지 않습니다.

당신은 이것을 좋아하지 않을 것이지만, 나는 bloatware 당신의 문제 라고 생각 합니다 (문제 그것이 메모리인지 디스크인지 확실하지 않지만). 불행히도, 리눅스 커널은 높은 메모리 부족 상황을 처리하는 데 끔찍하며 메모리가 고갈되면 기본적으로 재부팅을 요구하는 것으로 알려져 있습니다. 문제가 리소스 고갈이라고 믿게하는 세 가지가 있습니다.

  1. 루트 (/) 및 DATA의 디스크 공간이 거의 찼습니다. DATA를 어떻게 사용하는지 잘 모르겠지만 루트 파티션의 크기를 너무 작게 설정하고 시스템을 사용할 수 없게되기 전에 문제가 발생했습니다.
  2. 메모리가 부족하여 RAM이 거의 찼습니다. RAM이 가득 차기 시작하면 페이지 오류가 발생하기 시작합니다. 커널이 프로세스에 충분한 메모리를 할당 할 수없는 경우 페이지 결함이 발생하고 대신 일부 시스템을 훨씬 느린 스왑 공간을 사용해야합니다. 이것은 우리의 마지막 관찰로 이어집니다.
  3. 스왑 공간이 거의 찼습니다. RAM과 스왑이 거의 가득 찼기 때문에 시스템에 약간의 메모리 압력이 발생합니다.

기본적으로이 세 가지를 합치면 시스템에 많은 작업을 수행 할 수있는 충분한 리소스가 없습니다. 불행히도 리눅스가 메모리 부족 상황 (윈도우의 NT 커널과 비교)을 제대로 처리하지 못하는 것은 좋지만 그것이 그 방식과 같습니다. 이 Reddit 스레드 와 링크 된 메일 링리스트 에서 더 많은 토론 찾을 수 있습니다 .

상황을 해결하는 방법에 대해서는 스왑 크기를 늘리는 것이 좋지만 디스크 공간이 부족하여 문제가 될 수 있습니다. Minecraft 서버에 많은 사람들이 없다면 메모리를 약 1024m 정도로 줄이는 것이 안전하다고 생각합니다 (개인적으로 약 10 명과 함께 1024m을 사용하고 제대로 작동합니다). 또한 마인 크래프트 서버는 성능이 좋기 때문에 마개 크래프트 나 종이를 사용합니다.

행운을 빕니다!


7
디스크가 아니라 문제인 것은 분명한 메모리입니다. 메모리 부족으로 리눅스가 나쁘다는 것은 사실입니다. 그러나 재부팅이 필요한 것은 아닙니다. 일부 메모리를 확보하면 Linux는 메모리 부족이 사용 가능한 용량을 초과하기 전과 마찬가지로 응답 성이 높아집니다.
Gilles 'SO- 악마 그만'

1
@Kais 스왑 공간에 대해 이야기하고 포인트 3에서 계속 이야기 할 것이기 때문에 "이것은 우리를 마지막 관찰로 인도합니다"라고 말했습니다. Minecraft 정보 그것에 3G의 RAM. 나는 단지 많은 사람들이 동시에 연주하지 않는 한, 그렇게 많은 RAM이 필요하지 않을 수 있다고 말하고있었습니다. 나는 바닐라 MC보다 더 나은 성능을 제공하는 대체 마인 크래프트 서버 인 종이와 마개에 대해 이야기 할 때 "그들은 더 성능이 좋은 경향이있다"고 말했다.
체이스

2
일반적으로 스왑을 사용하는 것이 나쁜 생각이라고 들었습니다. 서버 환경에서 최소 12 분 동안 동결 할 수없는 경우
9ilsdx 9rvj 0lo

2
@ Kais, 내 경험에 따르면 Windows는 GUI가 아닌 프로그램으로 인해 더 나빠 지지만 메모리 부족이 높으면 데스크탑이 아닌 GUI 프로그램이 일시 중단되어 데스크탑 응용 프로그램에 배경이 없다고 가정하여 데스크탑의 문제를 해결합니다. 작업.
사이먼 리히터

2
바닐라 마인 크래프트; 선수도 :)에 합류하기 전에 그러나 큰 modpacks 쉽게 3 지브에 도착
Luaan

4

출력은 free -m무엇입니까? 사용중인 RAM의 양을 모르면 RAM의 양이 의미가 없습니다. 그리고 스왑 공간이 얼마나 사용되고 있는지 알고 싶습니다.

그래도 당신이 당신 자신의 질문에 대답했다고 생각합니다. 브라우저에서 "다수의 탭"을 연 상태에서 시스템을 닫지 않으면 시스템 속도가 느려질 수 있습니다. 시스템이 정지되면 한 번에 몇 개나 열었습니까?

또한 "매우 복잡한 UML 다이어그램에서 매우 큰 그래프 생성"과 같이 메모리를 많이 사용하는 다른 작업으로 인해 시스템이 정지 된 경우에도 의미가 있습니다. 그래프를 생성 할 때 시스템 속도가 느려지므로 놀랄 일이 아닙니다.

실제로 이것이 시스템이 작동하는 방식 인 것처럼 들립니다. 그 중 하나이거나 여기에 뭔가 빠졌습니다.

그건 그렇고, HDD 통계는 메모리 부족이 거의 항상 범인이기 때문에 시스템이 응답하지 않는 경우 중요하지 않습니다.


1
"이것은 당신의 시스템을 절대적으로 느리게 할 것입니다."-네, 이것은 예상되지만 제어 할 수없는 X 세션을 야기 할 수는 없습니다 (예 : 시스템 정지의 결과). 마우스 커서가 움직이는 것을 볼 수 없습니다.
카이스

1
실제로 예상 할 수 있습니다. 설명하는 동작은 시스템에서 너무 많은 RAM을 사용할 때 발생하는 동작입니다. 텍스트 기반 터미널로 전환 할 수 없을 정도로 시스템이 막혔으며, RAM이 두 배로 늘어났습니다. X 세션을 사용할 수없는 상황에 처한 경우 텍스트 기반 터미널로 전환하여 문제가있는 프로세스를 종료해야합니다. 실패하면 하드 재부팅을해야합니다. 말할 수있는 최선의 방법.
Zach 산체스

1
@Kais macOS는 메모리 부족 상황에서도 느려집니다. 실제로 시스템이 RAM에 어떤 메모리를 보관해야하는지 현명하게 결정할 방법이 없으므로 응용 프로그램 간 전환이 미친 것처럼, UI가 응답하지 않는 지점으로 전환됩니다.
Kusalananda

5
"윈도우 관리자"UI를 반응 적으로 유지하는 훨씬 더 효과적인 방법은 없습니다. MS 리서치는 수요 페이징을 금지하는 설계에 대한 전체 실험 OS를 작성했습니다. 개념 증명 : Midori에서 "창 관리자"를 실행하고 스왑을 포함한 Linux 앱을 에뮬레이트합니다. 거기에서 앱을 교체하더라도 "윈도우 관리자"는 반응을 유지합니다. 최소한 메모리를 해제하기 위해 일부 앱을 안정적으로 종료시킬 수 있습니다. 리눅스는 완벽하지 않다. X11에서 Wayland 로의 그놈 (Gnome) 전환으로 과부하 된 시스템에서 WRT 응답 성이 크게 악화되었습니다.
sourcejedi

2
HDD 통계가 중요 할 수 있습니다. 응답하지 않는 원인 중 하나는 디스크 고장으로 인해 큰 I / O 백 로그가 발생하기 때문입니다. 그러나 나는이 사건에서 그 증거가 보이지 않습니다.
200_ 성공

4

제목을 읽을 때 필자의 생각은 "RAM이 충분하지 않다"였습니다. 너무 많은 브라우저 탭을 연 후 10 분 이상 광란 디스크가 충돌하는 Linux에서이 문제를 직접 경험했기 때문입니다. 동의하지 않습니다. Windows는이 상황을 훨씬 잘 처리합니다.

몇 가지 제안 :

  • 시스템 트레이에 메모리 모니터 애플릿을 추가하여 계속 주시하십시오.
  • Firefox의 환경 설정에서 "content process limit"을 "1"로 설정하십시오. 설정 아래의 텍스트에 나와 있듯이 "추가 컨텐츠 프로세스는 여러 탭을 사용할 때 성능을 향상시킬 수 있지만 더 많은 메모리를 사용합니다."
  • 메모리가 부족한 브라우저 애드온을 제거하거나 교체하십시오. 광고는 어떤 차단기보다 많은 메모리를 소비하므로 광고 차단기를 유지하십시오.
  • 메모리가 부족한 다른 프로그램을 조사하고 제거하십시오.

그러나 유일한 해결책은 더 많은 RAM을 구입하는 것입니다.

많은 양의 RAM은 이러한 재앙이 발생하는 것을 방지 할뿐만 아니라 시스템이 RAM에 큰 파일 캐시를 구축 할 수있게 해줄 것입니다. 큰 파일 캐시는 HDD에서 작업을 수행하여 시스템의 거의 모든 작업이 일반적으로 더 빠르게 느껴집니다. 그것은 가치.


좋은 답변입니다. 감사합니다. 그러나 "추가 컨텐츠 프로세스는 여러 탭을 사용할 때 성능을 향상시킬 수 있지만 더 많은 메모리를 사용하게됩니다." -올바르게 이해하면 Firefox가 기본 설정에 따라 탭당 최대 8 개의 프로세스를 열 수 있습니까?
카이스

1
@ Kais 탭 당 1 개의 프로세스라고 생각합니다. 어쨌든 한계를 1로 설정하면 모든 탭에 대해 프로세스 총계가 1이되므로 메모리를 적게 사용해야합니다.
Boann

알겠습니다, 다시 한번 감사드립니다.
카이스

4

htop 출력은 RAM 필요량이 용량 (전체 RAM + SWAP)보다 높다는 것을 보여줍니다. 따라서 가장 먼저 고려해야 할 사항은 RAM 사용을 줄이거 나 RAM 가용성을 높이는 것입니다.

최신 파이어 폭스 버전은 창 / 탭에 프로세스 및 메모리 공간이 제공되는 방식으로 인해 리소스 가 매우 부족합니다. 아이디어는 전체 브라우저가 무릎을 꿇는 탭 충돌을 피하는 것이 었습니다. 그것이 가격의 값어치를합니까? 누가 알 수 있습니까 ... 어쨌든 Pentium 4 메인 보드는 2GB의 RAM 만 지원하기 때문에 위와 같은 문제가 발생했습니다. 가능한 메모리 소진 충돌을 피하기 위해 가능한 한 적은 용량을 사용하려는 의도로 여분의 SSD에 ~ 800M 스왑 공간을 추가했습니다. 나는 swappiness로 알려진 설정을 변경함으로써 커널이 메모리 페이지를 얼마나 쉽게 스왑 할 수 있는지 결정합니다. 다음과 같은 유용한 명령이 있습니다.

현재 교환을 확인하십시오. cat /proc/sys/vm/swappiness

이로 인해 약 60 정도의 결과가 나올 수 있으며, 이는로드가 적은 시스템에서 최대 성능을 발휘할 수있는 수준입니다. 분명히 이것은 반 생산적이므로 sysctl vm.swappiness=1시스템이 실행되는 동안 설정을 변경하는 등의 명령을 사용하여 설정을 변경할 수 있습니다 .

이러한 변경 사항을 저장하려면 파일을 찾아야합니다 /etc/sysctl.conf. 해당 파일에서 값을 변경하거나 행을 추가하십시오 vm.swappiness=1.

마음에, 이것은 귀하의 경우 해결책이 아니지만, 유용한 해결 방법을 만들어야합니다.

크레딧 https://askubuntu.com/questions/103915/how-do-i-configure-swappiness

위의 답변에 대한 소스에는 추가 설명이 포함되어 있습니다. 나는 그 게시물이 내 경우에 매우 도움이된다는 것을 알았습니다.


답변 주셔서 감사합니다. 이것은 VM 구성에 권장되는 것으로 들립니다.
Kais

2

문제의 원인, 지속 및 성장에 대한 훌륭한 토론. 초기 컴퓨터 디자인에서 하드웨어를 던지거나 기존 구현을 업그레이드하여 경험하는 문제를 극복하고 싶습니다. 너는 할수 있니,

  • RAM 추가 (32GB는 많은 설정에서 효과적 임)

  • 하드 디스크 드라이브를 SSD로 교체

  • 스왑 드라이브 용 SSD (Solid State Drive) 추가

  • RAM에 스왑 파티션 만들기 (32GB 이상의 RAM)

  • 더 빠른 HDD를 얻으십시오

  • 더 빠른 처리와 더 넓고 빠른 버스 아키텍처를 갖춘 시스템으로 이동

이러한 하드웨어 업그레이드 / 교체 중 일부는 $ 100US 미만일 수 있습니다. 이것들은 Linux 나 특정 소프트웨어 구현에 국한된 것이 아니지만 사용중인 하드웨어가 작업에 적합하지 않은 것 같습니다.


1
하드웨어 교체 권장 사항을 지적 해 주셔서 감사합니다.
Kais

1
도움이 되길 바랍니다. 어떤 유형의 컴퓨터 또는 특정 장비를 모르므로, 개선 가능성을 높이기위한 일반적인 단계입니다. 캐시의 스 래싱, 스왑 및 일반적으로 더 빠르고 적은 디스크 읽기 / 쓰기로 인해 발생하는 특정 속도 저하에 도움이 될 것입니다.
Old Uncle Ho

6
그중 대부분이 좋은 제안이지만 RAM으로의 스왑을 위해 zram 또는 zswap 을 사용하지 않는 한 RAM으로 스왑하는 것은 기본적으로 쓸모가 없습니다. 실제로 오버 헤드로 인해 약간 더 커집니다).
cas

RAM이 많거나 CPU가 적은 작업량에 대한 좋은 생각처럼 압축 할 때를 제외하고는 아무도 RAM으로 바꾸는 이유를 모르겠습니다.
피터-모니카 복지 상태

1
@bain :이 방법을 지금 보다 RAM 대에 스왑 아웃 된 페이지가 여전히 매핑? 압축을 사용하지 않는 한 여전히 많은 페이지의 물리적 RAM을 사용하고 있습니다. 그것이 가치가있는 곳입니다. 유일한 차이점은 더 많은 부기이지만 하드웨어 페이지 테이블이 더 깨끗하다는 것입니다. 기본적으로 매핑 해제를 무시하는 시작 전용 메모리 (예 : 시작 중 만지는 기능 / 데이터)의 경우 디스크 로 교체하는 것이 DRAM 공간을 소비하지 않기 때문에 더 좋습니다. 대화식으로 사용되지 않는 백그라운드 데몬의 경우 대기 시간이 중요하지 않으므로 디스크 스왑이 다시 승리합니다.
Peter Cordes

2

보통 "사용할 수없는"X11입니다. 키보드에서 프로그램으로 키 입력을 받고 화면에 무엇이든 표시하려면 여러 가지 다른 프로세스의 코드를 실행해야합니다. (X 서버는 커널에서 키 스트로크를 얻거나, xterm 또는 이와 동등한 이벤트를 가져 와서 무언가를 그리고 나서 X 서버에 메시지를 보내서 글꼴에서 글리프를 그립니다.)

Javascript 크랩이 많은 페이지를 표시하는 웹 브라우저를 사용하여 마우스를 창 위로 흔드는 것만으로도 많은 프로세스에 대해 많은 메시지가 표시 될 수 있습니다. 아마도 "캐시 된"비 압축 비트 맵을 포함하고있을 것입니다. 따라서 이것은 곧 더 많은 것들을 제거 할 가능성이 높습니다.

ctrl + alt + F2를 사용하여 다른 가상 콘솔로 전환하면 일반적으로 스왑 스 래싱을 유발할 때 몇 초만 대기하면 셸 명령을 로그인하고 실행할 수 있습니다. 그냥 bash; 리눅스 커널은 교환 할 수 없으며 모든 VT와
키보드 <-> TTY 코드를 가지고있다.


진정 스 래싱하지 않을 때 속도 저하를 피하려면 "스왑"을 줄이면 도움이됩니다. 예를 들어 NVMe SSD의 16GB RAM과 2GB 스왑 파티션이있는 데스크톱 에서 /proc/sys/vm/swappiness튜너 블을 설정했습니다 6. 서버 처리량과 달리 대화 형 대기 시간 조정에 대한 자세한 내용을 읽을 수 있습니다. 모든 가이드는 그 튜너 블을 언급 할 것입니다.

그러나 스왑이 전혀 없다면 Linux는 OOM 킬러를 호출하기 전에 스왑을 사용합니다. 스왑 파티션을 작게 유지하십시오. Linux가 일반적으로 오랫동안 사용되지 않는 오래된 쓰레기를 페이지 아웃 할 수있을 정도로 커야합니다. (예 : 메모리 누출!)

스왑이 가득 차는 데 아무런 문제가 없었습니다. 현대 리눅스는 스왑 공간이 제한되어 있습니다. Chromium (Firefox 대신 사용)은 때때로 수십 개의 스택 오버플로 탭을 열면 느려집니다. , 그레이트 서스펜더 는 탭을 사용하지 않을 때 언로드하는 데 유용한 애드온입니다. 텍스트 상자에 아무것도 입력하지 않은 탭 만 언로드하지만 상당한 RAM이 절약됩니다. Firefox에서도 사용할 수 있습니다.


다른 사람들이 제안했듯이 16GB RAM은 Linux와의 대화식 사용에 정말 좋습니다. DRAM 가격은 현재 상대적으로 낮다 . 약 1.5 년 전에 급상승 한 후, 그들은 대부분 다시 거절했습니다.


좋은 답변, 많은 감사합니다. 그러나 "다양한 Javascript 크랩에 대해서는 많은 프로세스에 대해 많은 메시지가 생길 수 있으며, 이로 인해 프로세스가 깨어나고 많은 데이터를 건 드리게됩니다"-이 프로세스가 무엇인지 궁금합니다. Firefox입니까? 자식 프로세스?
Kais

@Kais : 더 복잡한 데스크탑에서 창 관리자, 웹 브라우저, X 서버 및 기타 다양한 X 클라이언트. 그리고 마우스가 움직이는 창문이있는 다른 프로세스 (이 문장을 쓸 때 생각했던 것입니다). 예를 들어 KDE에서 작업 표시 줄은 창 관리자 와 별도의 프로세스 ( plasma)입니다 kwin.
Peter Cordes

LXDE를 사용하므로 필자의 경우 Openbox와 XOrg 서버 만 깨우는 프로세스입니까? 또한 어떤 종류의 메시지가 전달됩니까?
카이스

@Kais : 유닉스 도메인 소켓을 통한 X11 프로토콜 메시지. xev마우스를 움직일 때 어떤 종류의 메시지를 볼 수 있는지 언젠가 실행 해보십시오 . 또한 strace xev클라이언트 측과 관련된 시스템 호출을 확인하십시오.
Peter Cordes

고마워요 xev명령을 실행할 때 다른 창으로 전환하고 클릭하여 메시지를 받았지만 마우스 위로 이동하는 경우에는 해당되지 않습니다.
카이스

-2

특정 웹 사이트를 탐색 할 때 Linux가 응답하지 않는 이유는 무엇입니까?

Linux를 올바르게 사용하고 있지 않습니다. 자원 제한 시스템에서 특히 눈에.니다. 더 많은 RAM이나 더 빠른 프로세서가 필요하지 않습니다.

배경:

Almost every non-user program’s priority is 0.
Almost every user program’s priority is 20.

문제를 '수정'하려면 :

비 사용자 프로그램 만 남겨두고 문제를 일으키지 않도록 사용자 프로그램의 우선 순위 (좋은 수준)를 변경하십시오. 일반적으로 문제가 아닌 최악의 범죄자에 이르기까지 멋진 수준을 포함하도록 프로그램을 실행하는 항목을 편집하십시오.

실제 예 :

KMail:          nice -n 1 kmail -caption "%c" %i %m
LibreOffice:    nice -n 2 libreoffice --writer %U
Firefox:        nice -n 3 firefox %u
WorstOffender:  nice -n 9 {i'm a bad program}

WorstOffender는 몇 분 동안 여전히 응답하지 않습니다. 문자 그대로 더 나은 상자 문제를 사야하지만 이제는 전체 OS (Linux) 및 실행중인 모든 것이 응답하지 않습니다.


2
나는 많은 서버와 자체 워크 스테이션 (때로는 매우 제한된 VM 설정)에서 Linux로 수십 년 동안 일해 왔으며 RAM 관련 성능 문제를 한 번도 해결할 필요가 없었 습니다 nice -n. "더 많은 RAM이 필요하지 않습니다"-그는 확실히 더 많은 RAM이 필요합니다. 또는 ulimit최악의 범죄자를 엄격하게 제한하여 기존의 RAM이 다시 충분할 수 있습니다. "리눅스를 사용하고 있지 않습니다." 완전히 꺼져 있습니다.
AnoE

그리고 지난 22 년 동안 리소스 제한 하드웨어에 Linux GUI 설치 작업을 해왔으며“좋은”작업은“Linux가 몇 분 동안 응답하지 않는 상태”를 유지하는 문제를 해결했습니다.
Michael

나는 그것이 작동한다는 것을 부정하지 않는다. 나는 단지 리눅스와 함께 작업 하는 "올바른"방법으로 사용하는 것이 최선의 방법이 아닐 수도 있다고 말하고 있다.
AnoE
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.