TG Telegram Group & Channel
دستاوردهای یادگیری عمیق(InTec) | United States America (US)
Create: Update:

۱ ماه شده اومدم روی Debian اول از همه اینکه خیلی خیلی پیشرفت داشته Debian واقعا متعجب شدم.
پس چرا توزیع‌های بر پایه‌ی Debian اکثرا انقدر آشغال از کار در میاد ؟

اینجوری پیش رفت که ی بوت سالم برای سوییچ روی Rocky دارم ولی فعلا اصلا دلم نمی‌خواد برگردم روی Rocky با اینکه خیلی خوب پیشرفت حدود ۲ سال اخیر برام.

بگذریم:
متوجه شدم Debian روی sleep کردن مشکل شدید داره (البته همه می‌دونیم مشکل از Nvidia هست نه توزیع‌های لینوکسی)
توی این مدت خیلی وقتا باهاش کنار اومدم (مجبور بودم) مشکل اساسی این بود که سیستم از sleep در نمیاد همه چیز شروع می‌کنه به کار کردن (پمپ - فن‌‌ها - موس - کیبورد) اما فقط هیج کاری هم انجام نمیشه و هیچ خروجی display ایی وجود نداره و هیچ لاگی هم وجود نداره.
کلی دلیل می‌تونه برای این موضوع وجود داشته باشه ولی چون لاگ نداشت نمی‌تونستم حلش کنم.


خلاصه گفتم با این فرض پیش برم که nvidia ی جایی داره ی غلطی می‌کنه که نباید بکنه؛ پس هر جایی که اسکریپت به اسم sleep داشت رو بررسی کردم و رسیدم به usr/lib/systemd/system-sleep/nvidia/ البته دروغ چرا اول با همین مسیرا شروع کردم همچین بررسی کردن خاصی هم نبود 😉

ولی بعد از بازکردنش دیدم نوشته :

#!/bin/sh

case "$1" in
post)
/usr/bin/nvidia-sleep.sh "resume"
;;
esac


ازونجایی که pre نداشت تقریبا مطمئن شدم یکی از مشکلاتم همین هست؛ بجای اینکه خودم pre رو بنویسم (قبلا نوشتم و به اشتراک گذاشتم) رفتم یک نگاهی به usr/bin/nvidia-sleep.sh/ که آدرس داده که :

#!/bin/bash

if [ ! -f /proc/driver/nvidia/suspend ]; then
exit 0
fi

RUN_DIR="/var/run/nvidia-sleep"
XORG_VT_FILE="${RUN_DIR}"/Xorg.vt_number

PATH="/bin:/usr/bin"

case "$1" in
suspend|hibernate)
mkdir -p "${RUN_DIR}"
fgconsole > "${XORG_VT_FILE}"
chvt 63
if [[ $? -ne 0 ]]; then
exit $?
fi
echo "$1" > /proc/driver/nvidia/suspend
exit $?
;;
resume)
echo "$1" > /proc/driver/nvidia/suspend
#
# Check if Xorg was determined to be running at the time
# of suspend, and whether its VT was recorded. If so,
# attempt to switch back to this VT.
#
if [[ -f "${XORG_VT_FILE}" ]]; then
XORG_PID=$(cat "${XORG_VT_FILE}")
rm "${XORG_VT_FILE}"
chvt "${XORG_PID}"
fi
exit 0
;;
*)
exit 1
esac


که دیدم خودش تمیزکاری قبل از sleep رو هم داره همون بخش suspend رو می‌گم؛ پس فایل اول رو آپدیت کردم :

#!/bin/sh

case "$1" in
pre)
/usr/bin/nvidia-sleep.sh "suspend"
;;
post)
/usr/bin/nvidia-sleep.sh "resume"
;;
esac


خلاصه اگر مشکل این چنینی داشتید؛ مخصوصا روی سیستم‌های multi-GPU ممکن راهکار بالا مشکل شمارو هم حل کنه.

ازین به بعد این راهکارها رو روی gist.github هم می‌ذارم چون بعضی وقتا پیدا کردنش برای خودم هم خیلی سخت میشه:
Github Gist in English

Forwarded from RandRng
۱ ماه شده اومدم روی Debian اول از همه اینکه خیلی خیلی پیشرفت داشته Debian واقعا متعجب شدم.
پس چرا توزیع‌های بر پایه‌ی Debian اکثرا انقدر آشغال از کار در میاد ؟

اینجوری پیش رفت که ی بوت سالم برای سوییچ روی Rocky دارم ولی فعلا اصلا دلم نمی‌خواد برگردم روی Rocky با اینکه خیلی خوب پیشرفت حدود ۲ سال اخیر برام.

بگذریم:
متوجه شدم Debian روی sleep کردن مشکل شدید داره (البته همه می‌دونیم مشکل از Nvidia هست نه توزیع‌های لینوکسی)
توی این مدت خیلی وقتا باهاش کنار اومدم (مجبور بودم) مشکل اساسی این بود که سیستم از sleep در نمیاد همه چیز شروع می‌کنه به کار کردن (پمپ - فن‌‌ها - موس - کیبورد) اما فقط هیج کاری هم انجام نمیشه و هیچ خروجی display ایی وجود نداره و هیچ لاگی هم وجود نداره.
کلی دلیل می‌تونه برای این موضوع وجود داشته باشه ولی چون لاگ نداشت نمی‌تونستم حلش کنم.


خلاصه گفتم با این فرض پیش برم که nvidia ی جایی داره ی غلطی می‌کنه که نباید بکنه؛ پس هر جایی که اسکریپت به اسم sleep داشت رو بررسی کردم و رسیدم به usr/lib/systemd/system-sleep/nvidia/ البته دروغ چرا اول با همین مسیرا شروع کردم همچین بررسی کردن خاصی هم نبود 😉

ولی بعد از بازکردنش دیدم نوشته :
#!/bin/sh

case "$1" in
post)
/usr/bin/nvidia-sleep.sh "resume"
;;
esac


ازونجایی که pre نداشت تقریبا مطمئن شدم یکی از مشکلاتم همین هست؛ بجای اینکه خودم pre رو بنویسم (قبلا نوشتم و به اشتراک گذاشتم) رفتم یک نگاهی به usr/bin/nvidia-sleep.sh/ که آدرس داده که :

#!/bin/bash

if [ ! -f /proc/driver/nvidia/suspend ]; then
exit 0
fi

RUN_DIR="/var/run/nvidia-sleep"
XORG_VT_FILE="${RUN_DIR}"/Xorg.vt_number

PATH="/bin:/usr/bin"

case "$1" in
suspend|hibernate)
mkdir -p "${RUN_DIR}"
fgconsole > "${XORG_VT_FILE}"
chvt 63
if [[ $? -ne 0 ]]; then
exit $?
fi
echo "$1" > /proc/driver/nvidia/suspend
exit $?
;;
resume)
echo "$1" > /proc/driver/nvidia/suspend
#
# Check if Xorg was determined to be running at the time
# of suspend, and whether its VT was recorded. If so,
# attempt to switch back to this VT.
#
if [[ -f "${XORG_VT_FILE}" ]]; then
XORG_PID=$(cat "${XORG_VT_FILE}")
rm "${XORG_VT_FILE}"
chvt "${XORG_PID}"
fi
exit 0
;;
*)
exit 1
esac


که دیدم خودش تمیزکاری قبل از sleep رو هم داره همون بخش suspend رو می‌گم؛ پس فایل اول رو آپدیت کردم :

#!/bin/sh

case "$1" in
pre)
/usr/bin/nvidia-sleep.sh "suspend"
;;
post)
/usr/bin/nvidia-sleep.sh "resume"
;;
esac


خلاصه اگر مشکل این چنینی داشتید؛ مخصوصا روی سیستم‌های multi-GPU ممکن راهکار بالا مشکل شمارو هم حل کنه.

ازین به بعد این راهکارها رو روی gist.github هم می‌ذارم چون بعضی وقتا پیدا کردنش برای خودم هم خیلی سخت میشه:
Github Gist in English


>>Click here to continue<<

دستاوردهای یادگیری عمیق(InTec)




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)