Melanee AI & Physics
اگر بدونید زبان خوندن چقدر روی حافظه ی مغز تاثیر مثبت داره تا آخر عمرتون میخونیدش! یادگیری زبان های دیگه غیر از زبان مادری به شدت روی حافظه اثر مثبت داره و باعث میشه وقتی پیر شدید آلزایمر نگیرید. این چیزهایی هم که میگن در آینده هوش مصنوعی ای میاد که دیگه…
ادامه:
خلاصه توانایی های مغز انسان بسیار گسترده است و اکثر ما ها نمیدونیم مغزمون چقدر قدرت داره. من همه ی اینارو با تجربه بهش رسیدم و متوجه شدم مغز انسان اگه به طور مستمر اطلاعات بهش وارد بشه و با برنامه ریزی اطلاعات قبلی رو هم مرور کنه بعد چند سال در حد یه دانشمند میتونه اطلاعات داشته باشه! حتما هوش زیاد هم لازم نیست داشته باشید، همین قدرت حافظه رو دست کم نگیرید! اگه اطلاعات مغزتون رو بعد از چند سال جمع کنند تو کتاب ها اندازه یه کوه کتاب میشه!😦.
فقط مهارت برنامه ریزی واسه مرور کردن رو پیدا کنید.
با ارادت
مِلانی
۱۶ آذر ۱۴۰۲ هجری خورشیدی
خلاصه توانایی های مغز انسان بسیار گسترده است و اکثر ما ها نمیدونیم مغزمون چقدر قدرت داره. من همه ی اینارو با تجربه بهش رسیدم و متوجه شدم مغز انسان اگه به طور مستمر اطلاعات بهش وارد بشه و با برنامه ریزی اطلاعات قبلی رو هم مرور کنه بعد چند سال در حد یه دانشمند میتونه اطلاعات داشته باشه! حتما هوش زیاد هم لازم نیست داشته باشید، همین قدرت حافظه رو دست کم نگیرید! اگه اطلاعات مغزتون رو بعد از چند سال جمع کنند تو کتاب ها اندازه یه کوه کتاب میشه!😦.
فقط مهارت برنامه ریزی واسه مرور کردن رو پیدا کنید.
با ارادت
مِلانی
۱۶ آذر ۱۴۰۲ هجری خورشیدی
👍20❤2
دوستان محترم یه نکته ی خیلی مهم رو میخوام امروز بازش کنم براتون.
من تازگی متوجه شدم که اکثر دوستان برنامه نویس ما نمیان تو مباحث اساسی علوم کامپیوتر مثل سیستم های عامل دیپ بشن! همه فقط میخوان یه برنامه ای، مدلی، چیزی بنویسن که فقط روی سیستم خودشون اجرا بشه! راسیتش داستان اونقدرها که شما فکر میکنید ساده نیست. ما که قرار نیست پروژه ها، کدها،مدل ها و .... رو فقط بتونیم روی سیستم خودمون با موفقیت نصب و اجرا کنیم بعد آخرش هم خوشحال و خندون باشیم که این پروژه رو انجام دادیم. خیلی ازین برنامه هایی که شما مینویسید اصلا بهینه نیستند و حتی روی سیستم های دیگه اجرا نمیشن!
فکر میکنید چرا شرکت ها نمیان افراد بی تجربه رو استخدام کنند؟ چون کسایی که فقط تجربه ی کار با سیستم خودشون رو دارند و هیچ وقت روی پروژه های بزرگتری کار نکردند نمیدونند پشت قضیه چه خبره و ابزار ها و تکنولوژی های مهم دیگه رو بلد نیستند تا بتونند پروژه رو روی اسکیل بزرگتر مثلا روی سرورها یا کلاودها دیپلوی کنند!
برای اینکه پروژه شما پروژه موفقی باشه باید این قابلیت رو داشته باشه که برنامه شما همه جای دنیا بتونه کار کنه، خب این مستلزم اینه که شما یه سری مفاهیم عمیق تر علوم کامپیوتر رو بدونید؛ مثلا سیستم های عامل (Operating Systems) یا مثلا چیزهای دیگه مثل داکر، کانتیر، لینوکس، معماری نرم افزار، شبکه، ویرچوال ماشین، دیتابیس ها، الگوریتم و .... همه ی اینها رو تا حدی که نیاز خودتون هست باید بدونید پشت شون چه خبره و الا فرق شما با این همه برنامه نویس جونیور چیه؟!
خلاصه اینارو گفتم که فکرتون رو تو دنیای کامپیوتر بسته نگه ندارید و یه جاهایی که لازمه واقعا تو مفاهیم عمیق بشید و با دقت فکر کنید ماورای آنچه که به ظاهر دارید میبینید چه اتفافی داره میفته.
مِلانی
۱۷ آذر ۱۴۰۲ ❤🥰
من تازگی متوجه شدم که اکثر دوستان برنامه نویس ما نمیان تو مباحث اساسی علوم کامپیوتر مثل سیستم های عامل دیپ بشن! همه فقط میخوان یه برنامه ای، مدلی، چیزی بنویسن که فقط روی سیستم خودشون اجرا بشه! راسیتش داستان اونقدرها که شما فکر میکنید ساده نیست. ما که قرار نیست پروژه ها، کدها،مدل ها و .... رو فقط بتونیم روی سیستم خودمون با موفقیت نصب و اجرا کنیم بعد آخرش هم خوشحال و خندون باشیم که این پروژه رو انجام دادیم. خیلی ازین برنامه هایی که شما مینویسید اصلا بهینه نیستند و حتی روی سیستم های دیگه اجرا نمیشن!
فکر میکنید چرا شرکت ها نمیان افراد بی تجربه رو استخدام کنند؟ چون کسایی که فقط تجربه ی کار با سیستم خودشون رو دارند و هیچ وقت روی پروژه های بزرگتری کار نکردند نمیدونند پشت قضیه چه خبره و ابزار ها و تکنولوژی های مهم دیگه رو بلد نیستند تا بتونند پروژه رو روی اسکیل بزرگتر مثلا روی سرورها یا کلاودها دیپلوی کنند!
برای اینکه پروژه شما پروژه موفقی باشه باید این قابلیت رو داشته باشه که برنامه شما همه جای دنیا بتونه کار کنه، خب این مستلزم اینه که شما یه سری مفاهیم عمیق تر علوم کامپیوتر رو بدونید؛ مثلا سیستم های عامل (Operating Systems) یا مثلا چیزهای دیگه مثل داکر، کانتیر، لینوکس، معماری نرم افزار، شبکه، ویرچوال ماشین، دیتابیس ها، الگوریتم و .... همه ی اینها رو تا حدی که نیاز خودتون هست باید بدونید پشت شون چه خبره و الا فرق شما با این همه برنامه نویس جونیور چیه؟!
خلاصه اینارو گفتم که فکرتون رو تو دنیای کامپیوتر بسته نگه ندارید و یه جاهایی که لازمه واقعا تو مفاهیم عمیق بشید و با دقت فکر کنید ماورای آنچه که به ظاهر دارید میبینید چه اتفافی داره میفته.
مِلانی
۱۷ آذر ۱۴۰۲ ❤🥰
👍19❤6👎1
School of AI
زمانی که شما یه پروژه هوش مصنوعی یا علوم داده رو مثلا در دانشگاه انجام میدید، بیشتر تمرکزتون روی بخشهای مربوط به تحلیل داده و مدلسازی است. اما زمانی که به عنوان یک Machine Learning Engineer و یا یک Data Scientist وارد صنعت میشید، از شما انتظار میره که…
اینو بخونید. قبلا گذاشتمش.
متن از چنل مهندس حسینخانی
متن از چنل مهندس حسینخانی
Melanee AI & Physics
دوستان محترم یه نکته ی خیلی مهم رو میخوام امروز بازش کنم براتون. من تازگی متوجه شدم که اکثر دوستان برنامه نویس ما نمیان تو مباحث اساسی علوم کامپیوتر مثل سیستم های عامل دیپ بشن! همه فقط میخوان یه برنامه ای، مدلی، چیزی بنویسن که فقط روی سیستم خودشون اجرا بشه!…
دیتاساینتیست ها برنامه نویس های قوی ای هستند.
این جمله رو یادتون باشه.
این جمله رو یادتون باشه.
👍8😁1
فرض کنید یه پروژه ی جدید گرفتید. این پروژه حدودا سایز دیتاستش پنجاه گیگا بایته !!! و سیستمتون هم انقدر حجم خالی نداره؛ وقت هم ندارید بشینید با روش های معمولی این دیتاست رو از اینترنت دانلود کنید چون قطعا یه چیزی حدود شیش ساعت طول میکشه تا دانلود بشه (تازه اگه بشه🥴). در چنین شرایطی چی کار میکنید؟
بهش فکر کنید تا بهتون بگم بعدا.
دارم با چالش هایی که ممکنه در آینده تو کارتون مواجه بشید آشناتون میکنم. برا همینه میگم باید مهارت های دیگه مثل لینوکس و شبکه و ... بلد باشید.
بهش فکر کنید تا بهتون بگم بعدا.
دارم با چالش هایی که ممکنه در آینده تو کارتون مواجه بشید آشناتون میکنم. برا همینه میگم باید مهارت های دیگه مثل لینوکس و شبکه و ... بلد باشید.
❤9👍2🙏1
Melanee AI & Physics
Photo
راستی این پروژه رمز گشایی طومار سوخته باستانی شهر هرکولانیوم یه Competition تو کگل بوده که تا الان ۳ نفر اولش چندین هزار دلار برنده شدند😎. اینم لینکش:
https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/
https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/
Kaggle
Vesuvius Challenge - Ink Detection
Resurrect an ancient library from the ashes of a volcano
❤7
Melanee AI & Physics
فرض کنید یه پروژه ی جدید گرفتید. این پروژه حدودا سایز دیتاستش پنجاه گیگا بایته !!! و سیستمتون هم انقدر حجم خالی نداره؛ وقت هم ندارید بشینید با روش های معمولی این دیتاست رو از اینترنت دانلود کنید چون قطعا یه چیزی حدود شیش ساعت طول میکشه تا دانلود بشه (تازه…
لینوکس خیلی کارها میتونه انجام بده که ما ازش بیخبریم، واقعا به این نتیجه رسیدم هنوز کلی چیزها هست که ما بلد نیستیم که اگه بلد بودیم چقدر کارهامون راه میفتاد.
مثلا افزایش سرعت دانلود شبکه با فعال کردن پروتکل TCP BBR! البته متاسفانه این پروتکل با زیرساخت شبکه های ایران مثل همراه اول و اینا جواب نمیده چون گوگل دولوپش کرده ولی خب همینکه بدونیمش خیلی خوبه.
https://www.cyberciti.biz/cloud-computing/increase-your-linux-server-internet-speed-with-tcp-bbr-congestion-control/
مثلا افزایش سرعت دانلود شبکه با فعال کردن پروتکل TCP BBR! البته متاسفانه این پروتکل با زیرساخت شبکه های ایران مثل همراه اول و اینا جواب نمیده چون گوگل دولوپش کرده ولی خب همینکه بدونیمش خیلی خوبه.
https://www.cyberciti.biz/cloud-computing/increase-your-linux-server-internet-speed-with-tcp-bbr-congestion-control/
nixCraft
Increase Linux Internet speed with TCP BBR congestion control
Learn how to enable TCP BBR to improve network speed on Linux and improve Linux server Internet speed with a cutting-edge new BBR algorithm.
👍10
یکی از نکته های مهمی که به نظرم تو AI باید بهش توجه بشه اینه که تا حد ممکن مصرف انرژی و منابع سخت افزاری مثل RAM, CPU, GPU رو کاهش بدیم. این موضوع خیلی خیلی مهمه، حالا نمیدونم متخصصین این حوزه چقدر بهش توجه میکنند الان.
خب مسلما هرچه تعداد پارامترها و سایز دیتاست بزرگ تر باشه به همون میزان زمان بیشتری برای train شدنش میبره، زمان بیشتر منجر به مصرف بیشتر انرژی و منابع سخت افزاری میشه، انرژی بیشتر یعنی افزایش هزینه ها و ضررهای احتمالی به محیط زیست. دیدم گاهی train کردن یه مدل حدود یک هفته یا بیشتر طول کشیده!
من خودم همیشه اینو میگم چه اجباریه ما بیایم یه پروژه ای که حدود یک میلیون پارامتر داره رو کلش رو بیایم train کنیم؟! خب با روش های
Feature selection
میتونیم موثرترین پارامترهارو انتخاب کنیم و مثلا از یک میلیون پارامتر برسیم به ده هزار پارامتر.
میدونید چقدر تو مصرف هزینه ها و انرژی صرفه جویی میشه؟!
پ. ن: عکس مال خودمه، پیام اخلاقیش اینه که شما هم مثل من از ساک های پارچه ای به جای پلاستیک ها برای خریدهاتون استفاده کنید🍀♻️.
خب مسلما هرچه تعداد پارامترها و سایز دیتاست بزرگ تر باشه به همون میزان زمان بیشتری برای train شدنش میبره، زمان بیشتر منجر به مصرف بیشتر انرژی و منابع سخت افزاری میشه، انرژی بیشتر یعنی افزایش هزینه ها و ضررهای احتمالی به محیط زیست. دیدم گاهی train کردن یه مدل حدود یک هفته یا بیشتر طول کشیده!
من خودم همیشه اینو میگم چه اجباریه ما بیایم یه پروژه ای که حدود یک میلیون پارامتر داره رو کلش رو بیایم train کنیم؟! خب با روش های
Feature selection
میتونیم موثرترین پارامترهارو انتخاب کنیم و مثلا از یک میلیون پارامتر برسیم به ده هزار پارامتر.
میدونید چقدر تو مصرف هزینه ها و انرژی صرفه جویی میشه؟!
پ. ن: عکس مال خودمه، پیام اخلاقیش اینه که شما هم مثل من از ساک های پارچه ای به جای پلاستیک ها برای خریدهاتون استفاده کنید🍀♻️.
👍13👌5👎1
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
چون جایی هستم که پینگ میره و میاد، مدام چشمم به پینگ تایمه رو ترمینال
یه بش ساده نوشتم که گرافیکی باشه و قابل فهم تر باشه. شاید به درد کسی بخوره
https://gist.github.com/seqrity/92770ae80c568378149188814bb12c85
@DevTwitter | <Babak/>
یه بش ساده نوشتم که گرافیکی باشه و قابل فهم تر باشه. شاید به درد کسی بخوره
https://gist.github.com/seqrity/92770ae80c568378149188814bb12c85
@DevTwitter | <Babak/>
😁12👍7👏1
Melanee AI & Physics
چطوری در تلگرام یک قطعه کد برنامه نویسی رو بنویسیم؟ فقط کافیه کدتون رو به روش معمول تایپ کنید ولی اول و آخرش رو سه تا علامتی که در عکس میبینید بزارید خودش به صورت کد نمایش داده میشه. اول کدتون هم اسم زبانش رو بنویسید که بتونه تشخیص بده زبانش چیه. برای مثال:…
import os
from pdfminer.high_level import extract_text
def search_keywords_in_pdfs(folder_path, keywords):
try:
# Iterate over each file in the specified folder
for filename in os.listdir(folder_path):
if filename.endswith(".pdf"):
file_path = os.path.join(folder_path, filename)
print(f"\nSearching in file: {file_path}")
# Extract text from the PDF file
text = extract_text(file_path)
# Check if any of the keywords are present in the extracted text
if any(keyword.lower() in text.lower() for keyword in keywords):
print(f"Keyword(s) found in {filename}")
except Exception as e:
print(f"Error: {e}")
# Example usage:
pdf_folder_path = "path/to/your/pdf/folder"
search_keywords = ["python", "programming", "example"]
search_keywords_in_pdfs(pdf_folder_path, search_keywords)
😍6❤1👍1
Melanee AI & Physics
import os from pdfminer.high_level import extract_text def search_keywords_in_pdfs(folder_path, keywords): try: # Iterate over each file in the specified folder for filename in os.listdir(folder_path): if filename.endswith(".pdf"):…
وای چه ناز شد😍😎.
این برنامه رو واسه ی کاری نوشتم. یه قطعه کدی هست که کلمات کلیدی ای که میخواید رو تو پی دی اف ها میگرده و پیداش میکنه. البته هنوز جای کار داره.
کاربردش زیاده مثلا واسه گشتن تو یه عالمه پی دی اف رزومه که شما به عنوان کارفرما به دستتون رسیده ببینید کی ها با اون اسکیل هایی که شما نیاز دارید مچ هستند. فقط کافیه کلمه های کلیدی(اسکیل ها) مورد نظرتون رو مشخص کنید.
این برنامه رو واسه ی کاری نوشتم. یه قطعه کدی هست که کلمات کلیدی ای که میخواید رو تو پی دی اف ها میگرده و پیداش میکنه. البته هنوز جای کار داره.
کاربردش زیاده مثلا واسه گشتن تو یه عالمه پی دی اف رزومه که شما به عنوان کارفرما به دستتون رسیده ببینید کی ها با اون اسکیل هایی که شما نیاز دارید مچ هستند. فقط کافیه کلمه های کلیدی(اسکیل ها) مورد نظرتون رو مشخص کنید.
❤8👍2🏆1
Melanee AI & Physics
برای آمادگی مصاحبه ی های کاریم یه دفتر درست کردم که داخلش برای هر اسکیل و ابزاری که بلدم دو قسمت درست کردم؛ یکی بخش تئوری و یکی هم بخش پروژه ها و تجربه هام. مثلا برای موضوع NLP یکی دو صفحه از خلاصه های تئوریش نوشتم و یک صفحه هم راحب پروژه هام با تاریخشون😎.…
اگه مصاحبه کاری به زبان انگلیسی پیش رو دارید حتما این ریپازیتوری رو مطالعه کنید. هر شب یه سابجکت هم بخونید ذهنتون راه میفته:
https://github.com/mtdvio/every-programmer-should-know
https://github.com/mtdvio/every-programmer-should-know
👍4👏1🏆1
جدیدا وقتی میخوام یه پروژه ای رو از یه سرور به سرور دیگه دیپلوی کنم استرس خلبانی رو دارم که داره با هواپیماش یه جمعیتی رو جابه جا میکنه. فقط فرقمون اینه خلبان یه چیز فیزیکی رو جابه جا میکنه ولی من پروسس ها رو تو پکت و با سرعت نور یا امواج الکترومغناطیس جا به جا میکنم که با چشم دیده نمیشن. هر دومون خدایی کارمون سخته😒.
😁14🤣3👎1
یکی از دوستان پرسیدند چطوری پروژه هارو روی سرور انتقال میدید.
یک نمونه دیپلوی کردن پروژه روی سرور برای دوستان تازه کار:
تو این پروژه مهندس حسینخانی اومدند یه مدل ریکامندر سیستم رو روی سرورشون دیپلوی کردند. روش های انتقال پروژه روی سرور یا دیپلوی کردن بسیار متنوع هست ولی برای انواع پروژه ها (دیتاساینس، فلاتر، اندروید، وب و ...) تقریبا یه متد کلی داره.
https://www.aparat.com/v/1zems?playlist=5220444
یک نمونه دیپلوی کردن پروژه روی سرور برای دوستان تازه کار:
تو این پروژه مهندس حسینخانی اومدند یه مدل ریکامندر سیستم رو روی سرورشون دیپلوی کردند. روش های انتقال پروژه روی سرور یا دیپلوی کردن بسیار متنوع هست ولی برای انواع پروژه ها (دیتاساینس، فلاتر، اندروید، وب و ...) تقریبا یه متد کلی داره.
https://www.aparat.com/v/1zems?playlist=5220444
آپارات - سرویس اشتراک ویدیو
جلسه هفتم: آشنایی با MLOps و استقرار مدل با استفاده از TFX و Docker
در این جلسه ضمن آشنایی اولیه با MLOps و Cloud Computing و همینطور بررسی اولیهی الگوریتم توییتر، با روش ذخیره کردن یک مدل تنسورفلو برای استفاده مجدد و همینطور استقرار آن بر روی یک سرور لینوکسی به کمک Docker و TFX آشنا خواهیم شد.
👍5🤩1
میخوام یه کدی بهتون نشون میدم که کمتر کسی در طول تاریخ بشریت دیدش! منتظر بمونید.😎
❤5🔥1
Melanee AI & Physics
میخوام یه کدی بهتون نشون میدم که کمتر کسی در طول تاریخ بشریت دیدش! منتظر بمونید.😎
میدونستید این پروتکل های اصلی که در شبکه های کامپیوتری ازشون استفاده میکنید کدشون تو کرنل سیستم عامل تون قرار گرفته؟! اصلا تا به حال دیدیشون؟
اصلا این پروتکل ها چطوری ساخته میشن؟ یکی از کارهایی که میکنند اینه برای هر پروتکلی برنامه مینویسند و اونو در کرنل سیستم عامل میزارند. مثلا واسه پروتکل TCP میتونید سورس کدش رو در گیت هاب آقای Linus Torvals تو ریپازیتوری Linux که سورس کد کرنل لینوکس هست ببینید، برنامه اشو با زبان C نوشتند.
بقیه پروتکل هارو هم از تغییرات روی پروتکل TCP نوشتند مثل L2TP و ... .
نکته جالب تر اینه که هرکی میتونه پروتکل مخصوص خودش رو بنویسه! فقط پروتکل باید هم تو سیستم عامل فرستنده و هم گیرنده قرار بگیره تا از طریق یه پورتی بتونند بهم وصل بشن.
اینم سورس کد پروتکل TCP:
https://github.com/torvalds/linux/blob/master/net/ipv4/tcp.c
#شبکه
اصلا این پروتکل ها چطوری ساخته میشن؟ یکی از کارهایی که میکنند اینه برای هر پروتکلی برنامه مینویسند و اونو در کرنل سیستم عامل میزارند. مثلا واسه پروتکل TCP میتونید سورس کدش رو در گیت هاب آقای Linus Torvals تو ریپازیتوری Linux که سورس کد کرنل لینوکس هست ببینید، برنامه اشو با زبان C نوشتند.
بقیه پروتکل هارو هم از تغییرات روی پروتکل TCP نوشتند مثل L2TP و ... .
نکته جالب تر اینه که هرکی میتونه پروتکل مخصوص خودش رو بنویسه! فقط پروتکل باید هم تو سیستم عامل فرستنده و هم گیرنده قرار بگیره تا از طریق یه پورتی بتونند بهم وصل بشن.
اینم سورس کد پروتکل TCP:
https://github.com/torvalds/linux/blob/master/net/ipv4/tcp.c
#شبکه
👍5🤯4❤🔥1🫡1
Melanee AI & Physics
میخوام یه کدی بهتون نشون میدم که کمتر کسی در طول تاریخ بشریت دیدش! منتظر بمونید.😎
C
#define pr_fmt(fmt) "TCP: " fmt
#include <crypto/hash.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/fcntl.h>
#include <linux/poll.h>
#include <linux/inet_diag.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/skbuff.h>
#include <linux/scatterlist.h>
#include <linux/splice.h>
#include <linux/net.h>
#include <linux/socket.h>
#include <linux/random.h>
#include <linux/memblock.h>
#include <linux/highmem.h>
#include <linux/cache.h>
#include <linux/err.h>
#include <linux/time.h>
#include <linux/slab.h>
#include <linux/errqueue.h>
#include <linux/static_key.h>
#include <linux/btf.h>
#include <net/icmp.h>
#include <net/inet_common.h>
#include <net/tcp.h>
#include <net/mptcp.h>
#include <net/xfrm.h>
#include <net/ip.h>
#include <net/sock.h>
#include <linux/uaccess.h>
#include <asm/ioctls.h>
#include <net/busy_poll.h>
/* Track pending CMSGs. */
enum {
TCP_CMSG_INQ = 1,
TCP_CMSG_TS = 2
};
DEFINE_PER_CPU(unsigned int, tcp_orphan_count);
EXPORT_PER_CPU_SYMBOL_GPL(tcp_orphan_count);
long sysctl_tcp_mem[3] __read_mostly;
EXPORT_SYMBOL(sysctl_tcp_mem);
atomic_long_t tcp_memory_allocated ____cacheline_aligned_in_smp; /* Current allocated memory. */
EXPORT_SYMBOL(tcp_memory_allocated);
DEFINE_PER_CPU(int, tcp_memory_per_cpu_fw_alloc);
EXPORT_PER_CPU_SYMBOL_GPL(tcp_memory_per_cpu_fw_alloc);
#if IS_ENABLED(CONFIG_SMC)
DEFINE_STATIC_KEY_FALSE(tcp_have_smc);
EXPORT_SYMBOL(tcp_have_smc);
#endif
/*
* Current number of TCP sockets.
*/
struct percpu_counter tcp_sockets_allocated ____cacheline_aligned_in_smp;
EXPORT_SYMBOL(tcp_sockets_allocated);
/*
* TCP splice context
*/
struct tcp_splice_state {
struct pipe_inode_info *pipe;
size_t len;
unsigned int flags;
};
/*
* Pressure flag: try to collapse.
* Technical note: it is used by multiple contexts non atomically.
* All the __sk_mem_schedule() is of this nature: accounting
* is strict, actions are advisory and have some latency.
*/
unsigned long tcp_memory_pressure __read_mostly;
EXPORT_SYMBOL_GPL(tcp_memory_pressure);
void tcp_enter_memory_pressure(struct sock *sk)
{
unsigned long val;
if (READ_ONCE(tcp_memory_pressure))
return;
val = jiffies;
if (!val)
val--;
if (!cmpxchg(&tcp_memory_pressure, 0, val))
NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPMEMORYPRESSURES);
}
EXPORT_SYMBOL_GPL(tcp_enter_memory_pressure);
void tcp_leave_memory_pressure(struct sock *sk)
{
unsigned long val;
if (!READ_ONCE(tcp_memory_pressure))
return;
val = xchg(&tcp_memory_pressure, 0);
if (val)
NET_ADD_STATS(sock_net(sk), LINUX_MIB_TCPMEMORYPRESSURESCHRONO,
jiffies_to_msecs(jiffies - val));
}
EXPORT_SYMBOL_GPL(tcp_leave_memory_pressure)😍6👍3👏1