Skip to main content

Posts

Showing posts from January 8, 2023

Priority calculation

  The kernel maintains a priority value (sometimes termed the scheduling priority) for each thread. The priority value is a positive integer and varies inversely with the importance of the associated thread. That is, a smaller priority value indicates a more important thread. When the scheduler is looking for a thread to dispatch, it chooses the dispatchable thread with the smallest priority value. The formula for calculating the priority value is: priority value = base priority + nice penalty + (CPU penalty based on recent CPU usage) The recent CPU usage value of a given thread is incremented by 1 each time that thread is in control of the CPU when the timer interrupt occurs (every 10 milliseconds). The recent CPU usage value is displayed as the C column in the ps command output. The maximum value of recent CPU usage is 120. The default algorithm calculates the CPU penalty by dividing recent CPU usage by 2. The CPU-penalty-to-recent-CPU-usage ratio is therefore 0.5. This ratio i

[职场感言] 一个转专业PhD在FB的心得分享 |只看干货

  我作为一个天坑专业PHD 2016年底毕业加入FB进入了一个product growth组,一路从IC3 走到 IC6 然后转了 EM。最近看到地里很多转行CS和谈论FB的WLB以及内卷环境,和一些compensation的问题,所以我决定分享一下自己的经历,希望能从一个真实的角度带来一些insight。 ### 关于转专业NG的能力 ### 在很多组,转行选手如果能通过面试拿到offer, 我觉得和科班选手区别不大。 在大公司,解决问题时候更多的需要是快速学习的能力,交流能力和思考创新有韧性。我觉得这些能力基本不由本科或者硕士学了哪个专业决定,这更多的是个人intrinsicl的能力或者说general的技能。转专业选手已经体现了很好的韧性和学习能力,能做出决定转行本身就是decisive的一种体现,所以我觉得反而在某些特定环境下更容易成功。比如在一个需要更多bottom up思考的环境下,或者需要IC去做一些大决定的team里。 对于PHD,这种优势就更大了。不管你是理科还是文科的PHD,交流肯定是训练过的,独立思考能力和韧性也应该是没问题的。People skill也不会太差毕竟也在导师组员那里磨练过。这些在大公司都是能力优势。以我自己为例,我PHD训练过设计实验,写paper报告,做presentation,收集分析数据,build protype等等,虽然subject和编程完全没关系,单这些技能我现在的org都被证实非常有用。 .. . Waral dи, 但是,在一些硬核组比如research组或者底层infra组,如果你是PHD 或者有domain knowledge在这个field,优势肯定是极大的。这种技能不是general技能而是specialized,转专业会有很大的挑战。 . 1point 3acres . 1point3acres ### 关于在FB避免内卷 ### 我觉得避免内卷的本质在与把饼 (scope) 做大, 同时聪明的和别人分这个饼。每个组都有scope,在scope不变的情况下,每个人和manager之间都有个默契哪个scope是你的哪个是他的。你拿到的scope是不是容易出impact有时候和你的能力无关,一个静态的scope就会或多或少导致你要和同组的人竞争好的rating,pro

Top 10 Accessories for the Jetson Bolt Pro

ARGENTINA vs FRANCIA 4K 🎙Relato RODOLFO DE PAOLI 📺 TyC Sports 🏆 Highligh...

图解Linux网络包接收过程

  因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对Linux底层的理解不深的话,遇到很多线上性能瓶颈你会觉得狗拿刺猬,无从下手。 我们今天用图解的方式,来深度理解一下在Linux下网络包的接收过程。还是按照惯例来借用一段最简单的代码开始思考。为了简单起见,我们用udp来举例,如下: int main (){     int serverSocketFd = socket(AF_INET, SOCK_DGRAM, 0 );    bind(serverSocketFd, ...);     char buff[BUFFSIZE];     int readCount = recvfrom(serverSocketFd, buff, BUFFSIZE, 0 , ...);    buff[readCount] = '\0' ;    printf( "Receive from client:%s\n" , buff); } 上面代码是一段udp server接收收据的逻辑。当在开发视角看的时候,只要客户端有对应的数据发送过来,服务器端执行 recv_from 后就能收到它,并把它打印出来。我们现在想知道的是,当网络包达到网卡,直到我们的 recvfrom 收到数据,这中间,究竟都发生过什么? 通过本文,你将深入理解Linux网络系统内部是如何实现的,以及各个部分之间如何交互。相信这对你的工作将会有非常大的帮助。本文基于Linux 3.10,源代码参见https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/,网卡驱动采用Intel的igb网卡举例。 友情提示,本文略长,可以先Mark后看! 一 Linux网络收包总览 在TCP/IP网络分层模型里,整个协议栈被分成了物理层、链路层、网络层,传输层和应用层。物理层对应的是网卡和网线,应用层对应的是我们常见的Nginx,FTP等等各种应用。Linux实现的是链路层、网络层和传输层这三层。 在Linux内核实现中,链路层协议靠网卡驱动来实现,内核协议栈来实现网络层和传输层。