TGViewer
Channel Public Channel
Subscribers
192
Photos
157
Videos
55
Links
150

Showing posts older than #470 · Back to latest

Older Posts 18 shown
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
  • ❤ 1
Post #465 177
دوستان علت اینکه این چند روز پست نمیزارم اینه که دارم روی یه سرویسی کار میکنم که احتمالا به درد همه برنامه نویسا میخوره
گیمرا هم ازش نون میبرن

فقط دعا کنید که شرمندتون نشم و یه چیز خوبی دربیاد
  • 🔥 5
Post #464 235
محفل Buddy بیاید از تجربه پریروزم از cursor بهتون بگم که تا به چشام نمیدیدم باور نمیکردم تو قسمت release کردن برنامه ام تو یه سایتی مشکل داشتم. انگار CI/CD اونجوری که باید، درست بیلد نمیکرد و هاستش نمیکرد. سورس سایت رو سیستمم بود و بنده به cursor گفتم این همچین مشکلی…
btw
اون پنلی که میگم توش کانتینر هامو مدیریت میکردم کاملا گارد میشد
رفت توکن api رو از روال دستورات bash history استخراج کرد
  • 🤯 3
Post #463 231
بیاید از تجربه پریروزم از cursor بهتون بگم که تا به چشام نمیدیدم باور نمیکردم

تو قسمت release کردن برنامه ام تو یه سایتی مشکل داشتم. انگار CI/CD اونجوری که باید، درست بیلد نمیکرد و هاستش نمیکرد.
سورس سایت رو سیستمم بود و بنده به cursor گفتم این همچین مشکلی داره و موقع پوش کردن سورس، درست بیلد نمیشه.

1- این برادر رفت سایتمو dig کرد،آیپی رو پیدا کرد
2- از پوشه .ssh فهمید دسترسی ssh دارم و کانکت شد.
3- از کانکشن ssh به استک مدیریت کانتینر های داکرم وصل شد
4- داکر کامپوز رو باز کرد و ادیت زد.
5- redeploy کرد
6- تغیرات رو داخل داشبورد مدیریتی کانتینر هام ذخیره کرد!
7- اتوماتیک از رو سیستمم کامیت رو زد و پوش کرد و درست شد.

آره خلاصه بترسید....
  • 🤯 4
  • ❤ 1
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
  • ❤ 2
Post #460 181
☕️ ما برنامه نویسا عاشق کافئینیم ولی چی شد که طبیعت اینو تولید کرده؟

جواب سادست. کافئین یه سیستم دفاعیه :)

کافئین برای حشرات کوچیک نوروتاکسینه و در دوز های بالا، حشراتو فلج میکنه. بعضی گیاها کافئین تولید میکنن تا خورده نشن.

از طرفی وقتی برگ این گیاها میریزه، کافئین به خاک نفوذ میکنه و از تشکیل علف هرز در اطراف گیاه جلوگیری میکنه.

حالا گیاهایی که در ارتفاعات بالاتری رشد میکنن کافئین کمتری دارن چون حشرات تو ارتفاعات بالا خیلی کمتره.
و بخاطر همین هم هست که ما عربیکا و روبوستا داریم 😁
ژالیب نیست؟

@Buddy_Stuff
  • 👍 4
  • ❤ 1
Post #454 195
اینترنت شما هم این هفته روانیتون کرده؟
  • 👍 17
  • 🐳 2
  • 👎 1
Post #452 211
Medicat جعبه ابزار

برای ما مهندسای کامپیوتر همیشه پیش میاد که نیاز به تعمیراتی مثل ریکاوری بوت، تغیر فایل، ریکاوری فایل و .... نیاز داشته باشیم ولی سیستممون بوت نمیشه
ابزار Medicat بر پایه Ventoy ساخته شده و کلی Utility داره که میتونید استفاده کنید

لینک پروژه | @Buddy_Stuff
  • 🐳 2
  • 👍 1
Post #451 228
محفل Buddy Project Halium اجرای لینوکس روی گوشی یکی از تمیزترین و منطقی‌ترین روش‌هایی که میتونین لینوکس واقعی رو روی گوشی اندرویدی بالا بیارید همینه چالش اصلی در ران کردن یه سیستم عامل دیگه تو گوشی های اندرویدی، تفاوت Bionic (کتابخانه C اندروید) با glibc تو لینوکسه.…
یک چالش بزرگ دیگه که الان یادم اومد این بود که کرنل‌های اندروید (Vendor Kernels) معمولا خیلی قدیمی‌تر از کرنل‌های Mainline لینوکس هستن (تو about تنظیمات گوشیتون چک کنید) و پورت کردن درایور های اختصاصی دیوایس به شاخه اصلی لینوکس، پروژه ای فوق‌العاده پیچیده و گاهی غیرممکنه.

هالیوم نیازمندی به 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
  • ❤ 3
Post #449 189
👩‍💻 فان فکت: در کرنل ویندوز، ما چیزی به اسم درایور C نداریم!

ویندوز از یک ساختاری به اسم Object Manager برای مدیریت سیستم عامل استفاده میکنه (در کرنل NT همه چی یک object ه)

تو کرنل درایور C یعنی آبجکت Device\HarddiskVolume3\

وقتی شما از WIN32_API استفاده میکنید، این لایه میاد آدرس هارو به object برای مپ شدن تو مموری تبدیل میکنه

علت اصلی اینکه تو ویندوز نمیتونید به بعضی اسما (مثل AUX یا CON) پوشه بسازید مستقیما به همین موضوع برمیگرده
چون برنامه ها دارن از WINAPI آدرس دهی میکنن، اسم Object های درایور های قدیمی با اسم پوشه به تداخل میخوره.


پس بله، مشکل از فایل سیستم نیست بلکه از شاهکار microslop ه
  • 🥴 1
Post #448 207
امروز تو سایت اینماد دیدم :)))

پ.ن: خیلی وقته نرفتم اینماد
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →