Post #469
150
Channel Public Channel
مح محفل Buddy
@buddy_stuff
- Subscribers
- 192
- Photos
- 157
- Videos
- 55
- Links
- 150
Showing posts older than #470 · Back to latest
Older Posts 18 shown
Post #468
139
Post #466
187

Cache Coherency و False Sharing
مفاهیم پرفورمنس در سیستم های Multithreaded
تو پردازنده های مدرن، هر هسته برای دسترسی سریع تر به داده ها از L1/L2 Cache اختصاصی خودش استفاده میکنه. برای این که مطمئن بشن مقدار یک متغیر تو کش همه هسته ها همگامه، از پروتکل هایی مثل MESI استفاده میشه. نکته اینجاست که پردازنده متغیرهارو تک تک کش نمیکنه، بلکه کل یک بلوک حافظه (معمولا 64 bit) تحت عنوان Cache Line رو جابه جا میکنه.
False Sharing
زمانی اتفاق می افته که دو ترد مجزا روی دو هسته مختلف، با متغیرهای کاملا متفاوتی کار میکنن اما این متغیرها به صورت تصادفی تو یک Cache Line مشترک در حافظه قرار بگیرن. هر بار که هسته A متغیر خودش رو مینویسه، کل لاین کش رو invalidate میکنه و هسته B مجبور میشه کل خط رو دوباره لود کنه. نتیجه؟ افت وحشتناک پرفورمنس به خاطر Cache Thrashing، بدون این که حتی یک Race Condition واقعی داشته باشید.
حلش معمولا با Data Alignment و Padding انجام میشه (مثل تابع alignas(64) در C++)
@Buddy_R
مفاهیم پرفورمنس در سیستم های Multithreaded
تو پردازنده های مدرن، هر هسته برای دسترسی سریع تر به داده ها از L1/L2 Cache اختصاصی خودش استفاده میکنه. برای این که مطمئن بشن مقدار یک متغیر تو کش همه هسته ها همگامه، از پروتکل هایی مثل MESI استفاده میشه. نکته اینجاست که پردازنده متغیرهارو تک تک کش نمیکنه، بلکه کل یک بلوک حافظه (معمولا 64 bit) تحت عنوان Cache Line رو جابه جا میکنه.
False Sharing
زمانی اتفاق می افته که دو ترد مجزا روی دو هسته مختلف، با متغیرهای کاملا متفاوتی کار میکنن اما این متغیرها به صورت تصادفی تو یک Cache Line مشترک در حافظه قرار بگیرن. هر بار که هسته A متغیر خودش رو مینویسه، کل لاین کش رو invalidate میکنه و هسته B مجبور میشه کل خط رو دوباره لود کنه. نتیجه؟ افت وحشتناک پرفورمنس به خاطر Cache Thrashing، بدون این که حتی یک Race Condition واقعی داشته باشید.
حلش معمولا با Data Alignment و Padding انجام میشه (مثل تابع alignas(64) در C++)
@Buddy_R
- ❤ 1
Post #465
177
دوستان علت اینکه این چند روز پست نمیزارم اینه که دارم روی یه سرویسی کار میکنم که احتمالا به درد همه برنامه نویسا میخوره
گیمرا هم ازش نون میبرن
فقط دعا کنید که شرمندتون نشم و یه چیز خوبی دربیاد
گیمرا هم ازش نون میبرن
فقط دعا کنید که شرمندتون نشم و یه چیز خوبی دربیاد
- 🔥 5
Post #464
235
محفل Buddy بیاید از تجربه پریروزم از cursor بهتون بگم که تا به چشام نمیدیدم باور نمیکردم تو قسمت release کردن برنامه ام تو یه سایتی مشکل داشتم. انگار CI/CD اونجوری که باید، درست بیلد نمیکرد و هاستش نمیکرد. سورس سایت رو سیستمم بود و بنده به cursor گفتم این همچین مشکلی…
btw
اون پنلی که میگم توش کانتینر هامو مدیریت میکردم کاملا گارد میشد
رفت توکن api رو از روال دستورات bash history استخراج کرد
اون پنلی که میگم توش کانتینر هامو مدیریت میکردم کاملا گارد میشد
رفت توکن api رو از روال دستورات bash history استخراج کرد
- 🤯 3
Post #463
231
بیاید از تجربه پریروزم از cursor بهتون بگم که تا به چشام نمیدیدم باور نمیکردم
تو قسمت release کردن برنامه ام تو یه سایتی مشکل داشتم. انگار CI/CD اونجوری که باید، درست بیلد نمیکرد و هاستش نمیکرد.
سورس سایت رو سیستمم بود و بنده به cursor گفتم این همچین مشکلی داره و موقع پوش کردن سورس، درست بیلد نمیشه.
1- این برادر رفت سایتمو dig کرد،آیپی رو پیدا کرد
2- از پوشه .ssh فهمید دسترسی ssh دارم و کانکت شد.
3- از کانکشن ssh به استک مدیریت کانتینر های داکرم وصل شد
4- داکر کامپوز رو باز کرد و ادیت زد.
5- redeploy کرد
6- تغیرات رو داخل داشبورد مدیریتی کانتینر هام ذخیره کرد!
7- اتوماتیک از رو سیستمم کامیت رو زد و پوش کرد و درست شد.
آره خلاصه بترسید....
تو قسمت release کردن برنامه ام تو یه سایتی مشکل داشتم. انگار CI/CD اونجوری که باید، درست بیلد نمیکرد و هاستش نمیکرد.
سورس سایت رو سیستمم بود و بنده به cursor گفتم این همچین مشکلی داره و موقع پوش کردن سورس، درست بیلد نمیشه.
1- این برادر رفت سایتمو dig کرد،آیپی رو پیدا کرد
2- از پوشه .ssh فهمید دسترسی ssh دارم و کانکت شد.
3- از کانکشن ssh به استک مدیریت کانتینر های داکرم وصل شد
4- داکر کامپوز رو باز کرد و ادیت زد.
5- redeploy کرد
6- تغیرات رو داخل داشبورد مدیریتی کانتینر هام ذخیره کرد!
7- اتوماتیک از رو سیستمم کامیت رو زد و پوش کرد و درست شد.
آره خلاصه بترسید....
- 🤯 4
- ❤ 1
Post #462
191
Post #461
192
محفل Buddy Anti-Aliasing و Rasterization یکی از مختصر ترین و بهترین توضیحاتی که میتونین درموردش بشنوید بحث باحالیه تو راستیراسیون معمولا از مفهوم barycentric استفاده میشه. Barycentric به مختصات مرکز ثقلی یه شکلی مثل مثلث یا mesh میگن. کارت گرافیک بر اساس این مختصات…

ترفند گرافیک Most Wanted 2012: جادوی Deferred Shading
اکثر بازی های نسل هفت برای نورپردازی مستقیم روی geometry هزینه سنگینی میدادن چون به ازای هر آبجکت و هر منبع نور، تمام محاسبات سایه زنی باید مستقیما روی مش سه بعدی تکرار میشد.
موتور شرکت کرایتریون با تغییر پایپ لاین به Deferred Shading گرافیک بازی رو متحول کرد:
فاز اول (G-Buffer): صحنه بدون نور رندر میشه و ویژگیهای خام هر پیکسل (رنگ Albedo، بردار Normal، عمق Depth و میزان Roughness) داخل چند لایه بافر دوبعدی ذخیره میشه.
فاز دوم (Lighting): کارت گرافیک بدون درگیر شدن با مش های سه بعدی سنگین، صدها نور داینامیک (چراغ ماشین ها، نور neon و رفلکشن خیس آسفالت) رو مستقیما روی پیکسل های این بافرها اعمال میکنه.
نتیجه؟ ده ها منبع نور و بازتاب های سنگین روی آسفالت خیس، بدون افت فریم روی سختافزار محدود اون دوران خیلی روون بالا میومد.
@Buddy_Stuff
اکثر بازی های نسل هفت برای نورپردازی مستقیم روی geometry هزینه سنگینی میدادن چون به ازای هر آبجکت و هر منبع نور، تمام محاسبات سایه زنی باید مستقیما روی مش سه بعدی تکرار میشد.
موتور شرکت کرایتریون با تغییر پایپ لاین به Deferred Shading گرافیک بازی رو متحول کرد:
فاز اول (G-Buffer): صحنه بدون نور رندر میشه و ویژگیهای خام هر پیکسل (رنگ Albedo، بردار Normal، عمق Depth و میزان Roughness) داخل چند لایه بافر دوبعدی ذخیره میشه.
فاز دوم (Lighting): کارت گرافیک بدون درگیر شدن با مش های سه بعدی سنگین، صدها نور داینامیک (چراغ ماشین ها، نور neon و رفلکشن خیس آسفالت) رو مستقیما روی پیکسل های این بافرها اعمال میکنه.
نتیجه؟ ده ها منبع نور و بازتاب های سنگین روی آسفالت خیس، بدون افت فریم روی سختافزار محدود اون دوران خیلی روون بالا میومد.
@Buddy_Stuff
- ❤ 2
Post #460
181

☕️ ما برنامه نویسا عاشق کافئینیم ولی چی شد که طبیعت اینو تولید کرده؟
جواب سادست. کافئین یه سیستم دفاعیه :)
کافئین برای حشرات کوچیک نوروتاکسینه و در دوز های بالا، حشراتو فلج میکنه. بعضی گیاها کافئین تولید میکنن تا خورده نشن.
از طرفی وقتی برگ این گیاها میریزه، کافئین به خاک نفوذ میکنه و از تشکیل علف هرز در اطراف گیاه جلوگیری میکنه.
حالا گیاهایی که در ارتفاعات بالاتری رشد میکنن کافئین کمتری دارن چون حشرات تو ارتفاعات بالا خیلی کمتره.
و بخاطر همین هم هست که ما عربیکا و روبوستا داریم 😁
ژالیب نیست؟
@Buddy_Stuff
جواب سادست. کافئین یه سیستم دفاعیه :)
کافئین برای حشرات کوچیک نوروتاکسینه و در دوز های بالا، حشراتو فلج میکنه. بعضی گیاها کافئین تولید میکنن تا خورده نشن.
از طرفی وقتی برگ این گیاها میریزه، کافئین به خاک نفوذ میکنه و از تشکیل علف هرز در اطراف گیاه جلوگیری میکنه.
حالا گیاهایی که در ارتفاعات بالاتری رشد میکنن کافئین کمتری دارن چون حشرات تو ارتفاعات بالا خیلی کمتره.
و بخاطر همین هم هست که ما عربیکا و روبوستا داریم 😁
ژالیب نیست؟
@Buddy_Stuff
- 👍 4
- ❤ 1
Post #457
136
Post #456
182
Post #455
163
Forwarded from 🪷 My Safe Aquarium ✨ ( Mahi in the void)
SUT Twitter کافه رفتن بهونس قهوه به قهوه دنبال مادرت میگردم
من خطاب به مسئولین اینترنت:
Post #454
195
اینترنت شما هم این هفته روانیتون کرده؟
- 👍 17
- 🐳 2
- 👎 1
Post #452
211

Medicat جعبه ابزار
برای ما مهندسای کامپیوتر همیشه پیش میاد که نیاز به تعمیراتی مثل ریکاوری بوت، تغیر فایل، ریکاوری فایل و .... نیاز داشته باشیم ولی سیستممون بوت نمیشه
ابزار Medicat بر پایه Ventoy ساخته شده و کلی Utility داره که میتونید استفاده کنید
لینک پروژه | @Buddy_Stuff
برای ما مهندسای کامپیوتر همیشه پیش میاد که نیاز به تعمیراتی مثل ریکاوری بوت، تغیر فایل، ریکاوری فایل و .... نیاز داشته باشیم ولی سیستممون بوت نمیشه
ابزار Medicat بر پایه Ventoy ساخته شده و کلی Utility داره که میتونید استفاده کنید
لینک پروژه | @Buddy_Stuff
- 🐳 2
- 👍 1
Post #451
228
محفل Buddy Project Halium اجرای لینوکس روی گوشی یکی از تمیزترین و منطقیترین روشهایی که میتونین لینوکس واقعی رو روی گوشی اندرویدی بالا بیارید همینه چالش اصلی در ران کردن یه سیستم عامل دیگه تو گوشی های اندرویدی، تفاوت Bionic (کتابخانه C اندروید) با glibc تو لینوکسه.…
یک چالش بزرگ دیگه که الان یادم اومد این بود که کرنلهای اندروید (Vendor Kernels) معمولا خیلی قدیمیتر از کرنلهای Mainline لینوکس هستن (تو about تنظیمات گوشیتون چک کنید) و پورت کردن درایور های اختصاصی دیوایس به شاخه اصلی لینوکس، پروژه ای فوقالعاده پیچیده و گاهی غیرممکنه.
هالیوم نیازمندی به Mainline Kernel رو کاملاً دور میزنه، یعنی به جای پورت کردن درایورها، مستقیما از همون کرنل قدیمی و فابریک خود گوشی استفاده میکنه تا بدون درگیری با فرآیند طاقت فرسای Mainlining، بشه لینوکس رو روی دیوایس بالا آورد.
هالیوم نیازمندی به Mainline Kernel رو کاملاً دور میزنه، یعنی به جای پورت کردن درایورها، مستقیما از همون کرنل قدیمی و فابریک خود گوشی استفاده میکنه تا بدون درگیری با فرآیند طاقت فرسای Mainlining، بشه لینوکس رو روی دیوایس بالا آورد.
Post #450
4.85K

Project Halium اجرای لینوکس روی گوشی
یکی از تمیزترین و منطقیترین روشهایی که میتونین لینوکس واقعی رو روی گوشی اندرویدی بالا بیارید همینه
چالش اصلی در ران کردن یه سیستم عامل دیگه تو گوشی های اندرویدی، تفاوت Bionic (کتابخانه C اندروید) با glibc تو لینوکسه. پروژه Halium با استفاده از libhybris مثل یک پل عمل میکنه!
یعنی به برنامه های glibc اجازه میده توابع درایورهای Bionic و HAL اندروید رو صدا بزنن تا لینوکس مستقیم به GPU، سنسورها و مودم دسترسی داشته باشه.
تو Halium به جای نوشتن درایور از صفر، از همون کرنل اندروید و Vendor Blobهای سختافزار استفاده میشه. برای ایزولهسازی، لایه سرویسهای اندروید داخل یک کانتینر (مثل LXC) اجرا میشه.
سیستمعاملهایی مثل Ubuntu Touch و Sailfish OS برپایه همین معماری کار میکنن.
@Buddy_Stuff
یکی از تمیزترین و منطقیترین روشهایی که میتونین لینوکس واقعی رو روی گوشی اندرویدی بالا بیارید همینه
چالش اصلی در ران کردن یه سیستم عامل دیگه تو گوشی های اندرویدی، تفاوت Bionic (کتابخانه C اندروید) با glibc تو لینوکسه. پروژه Halium با استفاده از libhybris مثل یک پل عمل میکنه!
یعنی به برنامه های glibc اجازه میده توابع درایورهای Bionic و HAL اندروید رو صدا بزنن تا لینوکس مستقیم به GPU، سنسورها و مودم دسترسی داشته باشه.
تو Halium به جای نوشتن درایور از صفر، از همون کرنل اندروید و Vendor Blobهای سختافزار استفاده میشه. برای ایزولهسازی، لایه سرویسهای اندروید داخل یک کانتینر (مثل LXC) اجرا میشه.
سیستمعاملهایی مثل Ubuntu Touch و Sailfish OS برپایه همین معماری کار میکنن.
@Buddy_Stuff
- ❤ 3
Post #449
189
👩💻 فان فکت: در کرنل ویندوز، ما چیزی به اسم درایور C نداریم!
ویندوز از یک ساختاری به اسم Object Manager برای مدیریت سیستم عامل استفاده میکنه (در کرنل NT همه چی یک object ه)
تو کرنل درایور C یعنی آبجکت Device\HarddiskVolume3\
وقتی شما از WIN32_API استفاده میکنید، این لایه میاد آدرس هارو به object برای مپ شدن تو مموری تبدیل میکنه
علت اصلی اینکه تو ویندوز نمیتونید به بعضی اسما (مثل AUX یا CON) پوشه بسازید مستقیما به همین موضوع برمیگرده
چون برنامه ها دارن از WINAPI آدرس دهی میکنن، اسم Object های درایور های قدیمی با اسم پوشه به تداخل میخوره.
پس بله، مشکل از فایل سیستم نیست بلکه از شاهکار microslop ه
ویندوز از یک ساختاری به اسم Object Manager برای مدیریت سیستم عامل استفاده میکنه (در کرنل NT همه چی یک object ه)
تو کرنل درایور C یعنی آبجکت Device\HarddiskVolume3\
وقتی شما از WIN32_API استفاده میکنید، این لایه میاد آدرس هارو به object برای مپ شدن تو مموری تبدیل میکنه
علت اصلی اینکه تو ویندوز نمیتونید به بعضی اسما (مثل AUX یا CON) پوشه بسازید مستقیما به همین موضوع برمیگرده
چون برنامه ها دارن از WINAPI آدرس دهی میکنن، اسم Object های درایور های قدیمی با اسم پوشه به تداخل میخوره.
پس بله، مشکل از فایل سیستم نیست بلکه از شاهکار microslop ه
- 🥴 1
Post #448
207

امروز تو سایت اینماد دیدم :)))
پ.ن: خیلی وقته نرفتم اینماد
پ.ن: خیلی وقته نرفتم اینماد

