Systemd-swap: عذرًا ، قد يتم تعيين أولويات المقايضة الأصغر من -1 فقط بواسطة kernel نفسها

تم إنشاؤها على ١٤ يونيو ٢٠٢٠  ·  31تعليقات  ·  مصدر: Nefelim4ag/systemd-swap

يبدو أن سبب ذلك هو 52a468aeea9e00f3f1763e96a05adbe48b0a644d لكنني لم أشطر. هل يمكن أن يكون بسبب التغييرات الأمنية الأخيرة؟

/run/systemd/system/var-lib-systemd\x2dswap-swapfc-1.swap:11: Sorry, swap priorities smaller than -1 may only be assigned by the kernel itself, ignoring: -2

التعليق الأكثر فائدة

آه ، لا تهتم. يمكنني إعادة إنتاج هذا ، فهو لا يتم تسجيله عن طريق تبادل النظام ولكن بواسطة systemd

ال 31 كومينتر

هل يمكنك أن تقول إصدار Linux الخاص بك (إذا كان قوسًا سواء كان zen أو عاديًا) والتوزيعة ونظام الملفات؟

(هذا لم يحدث لي عند تشغيل arch zen 5.7 و f2fs)

ArchLinux 5.7.2 مع تعديلات zen و ext4.

هل تم إنشاء ملف المبادلة؟ (هل هذا مجرد تحذير؟)

أعدت التشغيل: / هل هناك طريقة لملء ذاكرة الوصول العشوائي بسرعة إلى نسبة معينة لتشغيل المبادلة؟

يمكنك استخدام الإجهاد - ng stress-ng --vm-bytes $(awk '/MemAvailable/{printf "%d\n", $2 * 0.90;}' < /proc/meminfo)k --vm-keep -m 1 (يخصص ما يصل إلى 90٪ من الذاكرة).

هناك طريقة أخرى لإصلاح هذه المشكلة وهي تعيين swapfc_priority=100 أو شيء ما في /etc/systemd/swap.conf.d/overrides.conf

حسنًا ، لا يزال بإمكانك التكاثر.
لا يزال ملف المبادلة قيد الإنشاء.
على الرغم من أنني أعتقد أنه يمكنني إصلاحه من خلال تعيين> -1 ، فهل هذا التحذير طبيعي؟ إذا كان الأمر كذلك ، فلا معنى لاستخدام هذا الإعداد الافتراضي وبدلاً من ذلك استخدم 0 أعتقد.

هناك شيء غريب ألاحظه أثناء الاختبار باستخدام stress-ng هو أنه عندما أستخدم * 0.50 ، يتم إنشاء قطعة مبادلة 1 جيجا بايت التي قمت بتكوينها بالفعل ولكن عندما أقوم بتغييرها إلى * 0.90 لن تتم إضافة المزيد من المقايضة على الرغم من وجود مساحة خالية تبلغ 700 ميغا بايت من الذاكرة.

التكوين الخاص بي:

swapfc_enabled=1
swapfc_force_use_loop=0          # Force usage of swapfile + loop
swapfc_frequency=1               # How often to check free swap space in seconds
swapfc_chunk_size=1G           # Size of swap chunk
swapfc_max_count=32              # Note: 32 is a kernel maximum
swapfc_min_count=0               # Minimum amount of chunks to preallocate
swapfc_free_swap_perc=25         # Add new chunk if free < 15%
swapfc_remove_free_swap_perc=55  # Remove chunk if free > 55% && chunk count > 2

zswap_enabled=1
zswap_compressor=zstd     # lzo lz4 zstd lzo-rle lz4hc
zswap_max_pool_percent=25 # 1-99
zswap_zpool=z3fold        # zbud z3fold (note z3fold requires kernel 4.8+)

يتم إنشاء ملف المبادلة الثاني فقط عندما يكون الملف الأول منخفضًا في الذاكرة

آه طيب. ولماذا لا يتم المبادلة إذن؟ أرى فقط 32 ميغا بايت مستخدمة.

سيتعين عليك أن تسأل Linus Torvalds عن ذلك ^ ^ ، في التبديل القصير يتم استخدامه فقط عندما يُطلب المزيد من الذاكرة ، لذلك إذا لم يطلب أي تطبيق المزيد من الذاكرة ، فلن ترى استخدام المبادلة.
يمكنك ضبط معلمات المبادلة بنفسك (Swappiness إلى آخره) ، لكن لاحظ أن الإعدادات الافتراضية لمبادلة systemd يتم ضبطها للإعدادات الافتراضية.

آه أرى شكرًا على الشرح الجميل: +1:
ماذا سنفعل حيال "المشكلة" الأولية؟

سأرى حول إعادة إنتاجه بنفسي في vm وإذا كان بإمكاننا إسكات التحذير (باستخدام 2>/dev/null في أمر swapon الخاص بنا). نظرًا لأن هذا لا ينتج عنه سوى تحذير ، فلن أقوم بوضعه في قائمة الانتظار للحصول على إصدار جديد على الفور ، لكنني سأجمعه مع إصلاحات / تحديثات أخرى.

إذن التحذير خاطئ ويمكننا إنشاء مبادلة بـ -2؟

لقد فعلت ذلك cat /proc/swaps ويبدو أن له بالفعل أولوية -2:

Filename                Type        Size    Used    Priority
/var/lib/systemd-swap/swapfc/1          file        1048572 33024   -2

لذلك ربما يكون خطأ في المنبع ويجب الإبلاغ عنه؟

تقول Ehh ، أن النواة هي فقط التي يمكنها إنشاء أولويات أقل من -1 ويبدو أن هذا صحيح (وفقًا للوثائق التي قرأتها) ، إنها خطأ في f2fs أو شيء يؤدي إلى ذلك بحيث لا أستطيع انظر هذا التحذير ....
السبب وراء التقصير في تبديل النظام إلى -2 هو أن هذه هي الطريقة التي تم تكوينها بها دائمًا ولا أرغب في كسر إعدادات الأشخاص.

حسنا فهمت ، شكرا. سأترك هذا مفتوحًا حتى تتمكن من التكاثر وإسكاته على ما أعتقد.

غير قادر على التكاثر في فيدورا وأرتش. هل يمكنك تقديم معلومات إضافية؟

لا يزال بإمكانك التكاثر بأحدث التزاماتك.
ما نوع المعلومات الأخرى التي تحتاجها؟

لا أعلم ، لكن لا يمكنني التشخيص حقًا دون أن أكون قادرًا على الإنجاب. ونظرًا لأنك أنت وحدك من تبلغ عن هذا الأمر ، فإنني أشعر أنه قد يكون هناك شيء ما في نهايتك يسبب ذلك.

  • مسار swapfc الخاص بي هو /var/lib/systemd-swap/swapfc/
  • خيارات التحميل لمحرك الأقراص: rw,noatime,lazytime
  • Systemd 245.6

التكوين الحالي لمبادلة systemd الخاص بي:

################################################################################
# Defaults are optimized for general usage
################################################################################

################################################################################
# You can override any settings with files in:
# /etc/systemd/swap.conf.d/*.conf
################################################################################

################################################################################
# Zswap
#
# Kernel >= 3.11
# Zswap create compress cache between swap and memory to reduce IO
# https://www.kernel.org/doc/Documentation/vm/zswap.txt

zswap_enabled=1
zswap_compressor=zstd     # lzo lz4 zstd lzo-rle lz4hc
zswap_max_pool_percent=25 # 1-99
zswap_zpool=z3fold        # zbud z3fold (note z3fold requires kernel 4.8+)

################################################################################
# ZRam
#
# Kernel >= 3.15
# Zram compression streams count for additional information see:
# https://www.kernel.org/doc/Documentation/blockdev/zram.txt

zram_enabled=0
zram_size=$(( RAM_SIZE / 4 ))    # This is 1/4 of ram size by default.
zram_count=${NCPU}               # Device count
zram_streams=${NCPU}             # Compress streams
zram_alg=zstd                    # See $zswap_compressor
zram_prio=32767                  # 1 - 32767

################################################################################
# Swap File Chunked
# Allocate swap files dynamically
# For btrfs fallback to swapfile + loop will be used
# ex. Min swap size 256M, Max 32*256M
swapfc_enabled=1
swapfc_force_use_loop=0          # Force usage of swapfile + loop
swapfc_frequency=1               # How often to check free swap space in seconds
swapfc_chunk_size=1G           # Size of swap chunk
swapfc_max_count=32              # Note: 32 is a kernel maximum
swapfc_min_count=0               # Minimum amount of chunks to preallocate
swapfc_free_swap_perc=25         # Add new chunk if free < 15%
swapfc_remove_free_swap_perc=55  # Remove chunk if free > 55% && chunk count > 2
swapfc_priority=0               # Priority of swapfiles (decreasing by one for each swapfile). Jumps from 0 to -2.
swapfc_path=/var/lib/systemd-swap/swapfc/
# Only for swapfile + loop
swapfc_nocow=1              # Disable CoW on swapfile
swapfc_directio=1           # Use directio for loop dev
swapfc_force_preallocated=0 # Will preallocate created files

################################################################################
# Swap devices
# Find and auto swapon all available swap devices
swapd_auto_swapon=1
swapd_prio=1024

آه ، لا تهتم. يمكنني إعادة إنتاج هذا ، فهو لا يتم تسجيله عن طريق تبادل النظام ولكن بواسطة systemd

هل هناك حل؟ - احصل على هذا في فرع اختبار Manjaro
25 حزيران (يونيو) 10:20:55 Workstation systemd [1]: / run / systemd / system / var-lib-systemd \ x2dswap-swapfc-1. مبادلة: 11 : عذرًا ، تبديل الأولويات الأصغر من -1 قد يتم تعيينها فقط بواسطة النواة نفسها ، وتجاهل: -2
25 يونيو 10:20:56 Workstation systemd [1]: فشل تنشيط ملف المبادلة.

على systemd 245.6-3 لا توجد مشكلة

هل هناك حل؟ - احصل على هذا في فرع اختبار Manjaro
25 حزيران (يونيو) 10:20:55 Workstation systemd [1]: / run / systemd / system / var-lib-systemd \ x2dswap-swapfc-1. مبادلة: 11 : عذرًا ، تبديل الأولويات الأصغر من -1 قد يتم تعيينها فقط بواسطة النواة نفسها ، وتجاهل: -2
25 يونيو 10:20:56 Workstation systemd [1]: فشل تنشيط ملف المبادلة.

على systemd 245.6-3 لا توجد مشكلة

نعم ، يمكنك ضبط الأولوية على شيء مثل 100

هل هناك حل؟ - احصل على هذا في فرع اختبار Manjaro
25 حزيران (يونيو) 10:20:55 Workstation systemd [1]: / run / systemd / system / var-lib-systemd \ x2dswap-swapfc-1. مبادلة: 11 : عذرًا ، تبديل الأولويات الأصغر من -1 قد يتم تعيينها فقط بواسطة النواة نفسها ، وتجاهل: -2
25 يونيو 10:20:56 Workstation systemd [1]: فشل تنشيط ملف المبادلة.
على systemd 245.6-3 لا توجد مشكلة

نعم ، يمكنك ضبط الأولوية على شيء مثل 100

لا يصلح مشكلتي:
grafik

أوه ، لقد أخطأت في قراءة تعليق. الأولوية لا تؤدي أبدًا إلى فشل ملف المبادلة ، إنها تحذر فقط ، لذا فإن مشكلتك لا علاقة لها.
الرجاء فتح قضية جديدة لهذا

لا أعرف متى بدأ ذلك مرة أخرى ، لكنني أستخدم أحدث نواة رئيسية مع تعديلات zen (linux-tkg) عند 5.9.7 وما زلت أعيد إنتاج هذه المشكلة إلا أنها أسوأ لأنها تستمر في زيادة الأولوية:

/var-lib-systemd\x2dswap-swapfc-3.swap:11: Sorry, swap priorities smaller than -1 may only be assigned by the kernel itself, ignoring: -474

هذا هو free -hm :

              total        used        free      shared  buff/cache   available
Mem:           15Gi       4,2Gi       907Mi       668Mi        10Gi       9,2Gi
Swap:         4,0Gi       2,3Gi       1,7Gi

وهنا هو التكوين الذي أستخدمه (بدون تغيير إلى /etc/systemd/swap.conf ، باستخدام ملف الإيداع:

################################################################################
# Defaults are optimized for general usage
################################################################################

################################################################################
# You can override any settings with files in:
# /etc/systemd/swap.conf.d/*.conf
################################################################################

################################################################################
# Zswap
#
# Kernel >= 3.11
# Zswap create compress cache between swap and memory to reduce IO
# https://www.kernel.org/doc/Documentation/vm/zswap.txt

zswap_enabled=1
zswap_compressor=zstd     # lzo lz4 zstd lzo-rle lz4hc
zswap_max_pool_percent=25 # 1-99
zswap_zpool=z3fold        # zbud z3fold (note z3fold requires kernel 4.8+)

################################################################################
# ZRam
#
# Kernel >= 3.15
# Zram compression streams count for additional information see:
# https://www.kernel.org/doc/Documentation/blockdev/zram.txt

zram_enabled=0
zram_size=$(( RAM_SIZE / 4 ))    # This is 1/4 of ram size by default.
zram_count=${NCPU}               # Device count
zram_streams=${NCPU}             # Compress streams
zram_alg=zstd                    # See $zswap_compressor
zram_prio=32767                  # 1 - 32767

################################################################################
# Swap File Chunked
# Allocate swap files dynamically
# For btrfs fallback to swapfile + loop will be used
# ex. Min swap size 256M, Max 32*256M
swapfc_enabled=1
swapfc_force_use_loop=0          # Force usage of swapfile + loop
swapfc_frequency=1               # How often to check free swap space in seconds
swapfc_chunk_size=2G           # Size of swap chunk
swapfc_max_count=16              # Note: 32 is a kernel maximum
swapfc_min_count=0               # Minimum amount of chunks to preallocate
swapfc_free_swap_perc=50         # Add new chunk if free < 50%
swapfc_remove_free_swap_perc=55  # Remove chunk if free > 55% && chunk count > 2
#swapfc_priority=0               # Priority of swapfiles (decreasing by one for each swapfile). Jumps from 0 to -2.
swapfc_path=/var/lib/systemd-swap/swapfc/
# Only for swapfile + loop
swapfc_nocow=1              # Disable CoW on swapfile
swapfc_directio=1           # Use directio for loop dev
swapfc_force_preallocated=0 # Will preallocate created files

################################################################################
# Swap devices
# Find and auto swapon all available swap devices
swapd_auto_swapon=1
swapd_prio=1024

هنا سجل دفتر يومية systemd-swap (مطروحًا منه أخطاء أولوية تبديل systemd)
systemd-swap-log.txt

تضمين التغريدة

هذا خطأ في التكوين من جانبك (على الرغم من أنه يجب إجراء فحوصات لذلك).

تكمن المشكلة في التكوين الخاص بك في إنشاء ملف مبادلة جديد نظرًا لأنك تستخدم أكثر من 50٪ من قيمة المبادلة. يعمل هذا بشكل جيد مع عدد قليل من ملفات المبادلة ، ولكن عند تخصيص ملف المبادلة التالي ، يصبح مقدار التبادل المجاني الآن أكبر من 55٪ لذلك يحاول على الفور إزالة ملف المبادلة ، ثم (لأننا أزلنا ملف المبادلة) ، مقدار المقايضة المجانية أقل من 50٪ لذلك يحاول إنشاء ملف مبادلة جديد (إعلان لا نهائي)

اخفض قيمة swapfc_free_swap_perc (مستحسن ، 15 هي القيمة الافتراضية لسبب ما) أو قم بزيادة قيمة swapfc_remove_free_swap_perc .

هذا كل شيء ، شكرًا! نعم كنت أحاول اللعب بالقيم لأن ملف المبادلة الجديد لم يكن قريبًا بما فيه الكفاية وتم تشغيل قاتل الذاكرة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات