深入了解Linux的btrace技术 (linux btrace)

Linux操作系统是当前更流行的开源操作系统之一,应用范围广泛。在Linux系统中,Btrace技术是一种非常有用和强大的补丁程序工具,可以帮助开发人员和系统管理员更好地了解和监测系统的性能和运行状态。本文将深入探讨Linux的Btrace技术,包括其概念、原理、应用场景、实践经验等相关内容。

概念介绍

Btrace技术是一种高效的动态追踪工具,可用于动态跟踪Linux内核中的系统调用和函数调用。Btrace基本上是一种事件驱动的跟踪技术,用户可以在程序中插入跟踪脚本,以便在程序执行时触发事件。

Btrace的使用非常简单,用户可以在命令行窗口使用Btrace风格的跟踪器,也可以使用系统日志工具来跟踪系统事件,以及在内核中使用Btrace脚本。Btrace提供了一系列跟踪函数和钩子函数,开发人员可以在不修改内核源代码的情况下对内核进行跟踪和调试。

原理分析

Btrace的原理是利用Linux内核中的Ftrace机制来实现的。Ftrace是Linux内核的一种动态跟踪框架,通过插入钩子来追踪内核中的函数调用和参数传递。Btrace实际上是Ftrace的一个补充,它利用Ftrace的机制来实现跟踪脚本的注册和加载,以及跟踪事件的生成和处理。

在Btrace中,用户可以使用简单的语法来定义跟踪脚本。脚本代码中,用户可以指定需要跟踪的函数、系统调用、变量、命令等,以及相关的事件处理函数和信息输出。一旦脚本被注册后,当相关的事件被触发时,Btrace就会调用脚本中的事件处理函数,并输出相应的信息。

应用场景

Btrace技术在系统运维和应用开发中非常有用。以下是几种常见的Btrace应用场景:

1. 性能调优

通过Btrace技术,可以动态监控系统中的函数调用和系统调用,分析代码中的瓶颈和性能问题。开发人员可以利用Btrace跟踪某个函数或系统调用的调用情况,以及传递参数和返回值的变化,从而找到系统中的瓶颈和性能问题,并对其进行优化。

2. 系统运行状态监测

使用Btrace技术,可以监测系统中的各种事件和状态,例如进程的创建和销毁、系统调用的处理、文件系统的操作等等。这些信息可以帮助系统管理员检查系统运行状态,发现和解决可能存在的问题,以及对系统进行优化和调整。

3. 安全防护

通过Btrace技术,可以对特定的进程或应用程序进行监控,分析其执行过程中的各种操作,以及对系统的影响和可能存在的安全漏洞。这可以帮助开发人员和系统管理员发现和修复安全漏洞,保障系统的安全性和稳定性。

实践经验

使用Btrace技术需要一定的技术基础,以下是一些实践经验供参考:

1. 开始使用Btrace前,首先需要掌握一些基础的Linux内核知识和编程技能,例如C语言编程、编译器、调试工具等等。

2. Btrace需要以root权限运行,这意味着需要特殊的系统配置和授权。

3. 在编写Btrace脚本时,应遵循良好的编码习惯,例如使用注释、格式化代码、错误处理等等。

4. 当使用Btrace技术调试和优化代码时,应尽量避免线上环境操作,以免影响正常的业务运行。可以使用测试环境或虚拟环境等方式进行操作。

Btrace技术是一种非常有用和强大的动态追踪工具,可用于动态跟踪Linux内核中的系统调用和函数调用。Btrace利用Linux内核中的Ftrace机制来实现相关功能,能够帮助开发人员和系统管理员更好地了解和监测系统的性能和运行状态,以及发现和解决可能存在的问题和安全漏洞。虽然使用Btrace需要一定的技术基础和经验,但一旦掌握了相关技能,将能够给开发工作带来很大的帮助和效率提升。

相关问题拓展阅读:

用C语言结构状态描述进程控制块的信息

这个,参考是来自哪自哪呢

~

以配御下来自linux内核2.6.35.7版本的代码,在头文件linux/sched.h中定渣渗义

struct task_struct {

volatile long state;/* -1 unrunnable, 0 runnable, >0 stopped */

void *stack;

atomic_t usage;

unsigned int flags;/* per process flags, defined below */

unsigned int ptrace;

int lock_depth;/* BKL lock depth */

#ifdef CONFIG_P

#ifdef __ARCH_WANT_UNLOCKED_CTXSW

int oncpu;

#endif

#endif

int prio, static_prio, normal_prio;

unsigned int rt_priority;

const struct sched_class *sched_class;

struct sched_entity se;

struct sched_rt_entity rt;

#ifdef CONFIG_PREEMPT_NOTIFIERS

/* list of struct preempt_notifier: */

struct hlist_head preempt_notifiers;

#endif

/*

* fpu_counter contains the number of consecutive context switches

* that the FPU is used. If this is over a threshold, the lazy fpu

* saving becomes unlazy to save the trap. This is an unsigned char

* so that after 256 times the counter wraps and the behavior turns

* lazy again; this to deal with bursty apps that only use FPU for

* a short time

*/

unsigned char fpu_counter;

#ifdef CONFIG_BLK_DEV_IO_TRACE

unsigned int btrace_seq;

#endif

unsigned int policy;

cpumask_t cpus_allowed;

#ifdef CONFIG_TREE_PREEMPT_RCU

int rcu_read_lock_nesting;

char rcu_read_unlock_special;

struct rcu_node *rcu_blocked_node;

struct list_head rcu_node_entry;

#endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */

#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)

struct sched_info sched_info;

#endif

struct list_head tasks;

struct plist_node pushable_tasks;

struct mm_struct *mm, *active_mm;

#if defined(SPLIT_RSS_COUNTING)

struct task_rss_statrss_stat;

#endif

/* task state */

int exit_state;

int exit_code, exit_signal;

int pdeath_signal; /* The signal sent when the parent dies */

/* ??? */如卖脊

unsigned int personality;

unsigned did_exec:1;

unsigned in_execve:1;/* Tell the Ls that the process is doing an

* execve */

unsigned in_iowait:1;

/* Revert to default priority/policy when forking */

unsigned sched_reset_on_fork:1;

pid_t pid;

pid_t tgid;

#ifdef CONFIG_CC_STACKPROTECTOR

/* Canary value for the -fstack-protector gcc feature */

unsigned long stack_canary;

#endif

/*

* pointers to (original) parent process, youngest child, younger sibling,

* older sibling, respectively. (p->father can be replaced with

* p->real_parent->pid)

*/

struct task_struct *real_parent; /* real parent process */

struct task_struct *parent; /* recipient of SIGCHLD, wait4() reports */

/*

* children/sibling forms the list of my natural children

*/

struct list_head children;/* list of my children */

struct list_head sibling;/* linkage in my parent’s children list */

struct task_struct *group_leader;/* threadgroup leader */

/*

* ptraced is the list of tasks this task is using ptrace on.

* This includes both natural children and PTRACE_ATTACH targets.

* p->ptrace_entry is p’s link on the p->parent->ptraced list.

*/

struct list_head ptraced;

struct list_head ptrace_entry;

/* PID/PID hash table linkage. */

struct pid_link pids;

struct list_head thread_group;

struct completion *vfork_done;/* for vfork() */

int __user *set_child_tid;/* CLONE_CHILD_SETTID */

int __user *clear_child_tid;/* CLONE_CHILD_CLEARTID */

cputime_t utime, stime, utimescaled, stimescaled;

cputime_t gtime;

#ifndef CONFIG_VIRT_CPU_ACCOUNTING

cputime_t prev_utime, prev_stime;

#endif

unsigned long nvcsw, nivcsw; /* context switch counts */

struct timespec start_time; /* monotonic time */

struct timespec real_start_time;/* boot based time */

/* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */

unsigned long min_flt, maj_flt;

struct task_cputime cputime_expires;

struct list_head cpu_timers;

/* process credentials */

const struct cred *real_cred;/* objective and real subjective task

* credentials (COW) */

const struct cred *cred;/* effective (overridable) subjective task

* credentials (COW) */

struct mutex cred_guard_mutex;/* guard against foreign influences on

* credential calculations

* (notably. ptrace) */

struct cred *replacement_session_keyring; /* for KEYCTL_SESSION_TO_PARENT */

char comm; /* executable name excluding path

access with et_task_comm (which lock

it with task_lock())

initialized normally by setup_new_exec */

/* file system info */

int link_count, total_link_count;

#ifdef CONFIG_SYSVIPC

/* ipc stuff */

struct sysv_sem sysvsem;

#endif

#ifdef CONFIG_DETECT_HUNG_TASK

/* hung task detection */

unsigned long last_switch_count;

#endif

/* CPU-specific state of this task */

struct thread_struct thread;

/* filesystem information */

struct fs_struct *fs;

/* open file information */

struct files_struct *files;

/* namespaces */

struct nsproxy *nsproxy;

/* signal handlers */

struct signal_struct *signal;

struct sighand_struct *sighand;

sigset_t blocked, real_blocked;

sigset_t saved_sigmask;/* restored if set_restore_sigmask() was used */

struct sigpending pending;

unsigned long sas_ss_sp;

size_t sas_ss_size;

int (*notifier)(void *priv);

void *notifier_data;

sigset_t *notifier_mask;

struct audit_context *audit_context;

#ifdef CONFIG_AUDITSYSCALL

uid_t loginuid;

unsigned int sessionid;

#endif

seccomp_t seccomp;

/* Thread group tracking */

u32 parent_exec_id;

u32 self_exec_id;

/* Protection of (de-)allocation: mm, files, fs, tty, keyrings, mems_allowed,

* mempolicy */

spinlock_t alloc_lock;

#ifdef CONFIG_GENERIC_HARDIRQS

/* IRQ handler threads */

struct irqaction *irqaction;

#endif

/* Protection of the PI data structures: */

raw_spinlock_t pi_lock;

#ifdef CONFIG_RT_MUTEXES

/* PI waiters blocked on a rt_mutex held by this task */

struct plist_head pi_waiters;

/* Deadlock detection and priority inheritance handling */

struct rt_mutex_waiter *pi_blocked_on;

#endif

#ifdef CONFIG_DEBUG_MUTEXES

/* mutex deadlock detection */

struct mutex_waiter *blocked_on;

#endif

#ifdef CONFIG_TRACE_IRQFLAGS

unsigned int irq_events;

unsigned long hardirq_enable_ip;

unsigned long hardirq_disable_ip;

unsigned int hardirq_enable_event;

unsigned int hardirq_disable_event;

int hardirqs_enabled;

int hardirq_context;

unsigned long softirq_disable_ip;

unsigned long softirq_enable_ip;

unsigned int softirq_disable_event;

unsigned int softirq_enable_event;

int softirqs_enabled;

int softirq_context;

#endif

#ifdef CONFIG_LOCKDEP

# define MAX_LOCK_DEPTH 48UL

u64 curr_chain_key;

int lockdep_depth;

unsigned int lockdep_recursion;

struct held_lock held_locks;

gfp_t lockdep_reclaim_gfp;

#endif

/* journalling filesystem info */

void *journal_info;

/* stacked block device info */

struct bio_list *bio_list;

/* VM state */

struct reclaim_state *reclaim_state;

struct backing_dev_info *backing_dev_info;

struct io_context *io_context;

unsigned long ptrace_message;

siginfo_t *last_siginfo; /* For ptrace use. */

struct task_io_accounting ioac;

#if defined(CONFIG_TASK_XACCT)

u64 acct_rss_mem1;/* accumulated rss usage */

u64 acct_vm_mem1;/* accumulated virtual memory usage */

cputime_t acct_timexpd;/* stime + utime since last update */

#endif

#ifdef CONFIG_CPUSETS

nodemask_t mems_allowed;/* Protected by alloc_lock */

int mems_allowed_change_disable;

int cpuset_mem_spread_rotor;

int cpuset_slab_spread_rotor;

#endif

#ifdef CONFIG_CGROUPS

/* Control Group info protected by css_set_lock */

struct css_set *cgroups;

/* cg_list protected by css_set_lock and tsk->alloc_lock */

struct list_head cg_list;

#endif

#ifdef CONFIG_FUTEX

struct robust_list_head __user *robust_list;

#ifdef CONFIG_COMPAT

struct compat_robust_list_head __user *compat_robust_list;

#endif

struct list_head pi_state_list;

struct futex_pi_state *pi_state_cache;

#endif

#ifdef CONFIG_PERF_EVENTS

struct perf_event_context *perf_event_ctxp;

struct mutex perf_event_mutex;

struct list_head perf_event_list;

#endif

#ifdef CONFIG_NUMA

struct mempolicy *mempolicy;/* Protected by alloc_lock */

short il_next;

#endif

atomic_t fs_excl;/* holding fs exclusive resources */

struct rcu_head rcu;

/*

* cache last used pipe for splice

*/

struct pipe_inode_info *splice_pipe;

#ifdefCONFIG_TASK_DELAY_ACCT

struct task_delay_info *delays;

#endif

#ifdef CONFIG_FAULT_INJECTION

int make_it_fail;

#endif

struct prop_local_single dirties;

#ifdef CONFIG_LATENCYTOP

int latency_record_count;

struct latency_record latency_record;

#endif

/*

* time slack values; these are used to round up poll() and

* select() etc timeout values. These are in nanoseconds.

*/

unsigned long timer_slack_ns;

unsigned long default_timer_slack_ns;

struct list_head*scm_work_list;

#ifdef CONFIG_FUNCTION_GRAPH_TRACER

/* Index of current stored address in ret_stack */

int curr_ret_stack;

/* Stack of return addresses for return function tracing */

struct ftrace_ret_stack*ret_stack;

/* time stamp for last schedule */

unsigned long long ftrace_timestamp;

/*

* Number of functions that haven’t been traced

* because of depth overrun.

*/

atomic_t trace_overrun;

/* Pause for the tracing */

atomic_t tracing_graph_pause;

#endif

#ifdef CONFIG_TRACING

/* state flags for use by tracers */

unsigned long trace;

/* bitmask of trace recursion */

unsigned long trace_recursion;

#endif /* CONFIG_TRACING */

#ifdef CONFIG_CGROUP_MEM_RES_CTLR /* memcg uses this to do batch job */

struct memcg_batch_info {

int do_batch;/* incremented when batch uncharge started */

struct mem_cgroup *memcg; /* target memcg of uncharge */

unsigned long bytes; /* uncharged usage */

unsigned long memsw_bytes; /* uncharged mem+swap usage */

} memcg_batch;

#endif

游戏本PK移动工作站 娱乐设计谁更两全

【IT168 评测】在我们挑选一款笔记本电脑的时候,显卡由于在应用上左脊渗右了大部分的性能发挥,所以成为性能判定的重要一环,好的显卡能在大型3D游戏的表现上更加完美,成为众多游戏爱好者的首选。而在商务专业领域,部分中高端的机型则配备了与消费级完全不同的专业显卡,特别以移动工作站的配置更为抢眼,它们价格虽高,却在数字内容创作、计算机辅助设计、金融计历让算、医疗仿真、油气勘探等专业领域均得到了广泛的应用。

  不过随着笔记本显卡性价比的提高,不少价格位于中段的笔记本显卡的配置也是越来越强,例如目前中段性能较好的HD 5650的显卡价格仅为5000元左右,而之前一些配置专业显卡的商务笔记本价格也走低,配备了NVIDIA Quadro NVS 3100M专业显卡的ThinkPad T410i的价格更便宜仅售7000多元。这两方面的趋势让不少想挑选一款以设计为目的的用户产生了一定的疑惑,到底该怎么判定中断游戏本和专业显卡笔记本的区别呢,到底谁更专业谁更全能?而另一方面,移动工作站的高分屏、屏幕色彩佳、性能出色让不少的游戏爱好者青睐,而将它作为游戏笔记本来使用,那么这样到底适合不适合呢?接下来,我们将来探寻一下新平台下的游戏本和移动工作站,谁能全面到位。

  测试机型平台介绍

  索尼EA2S是索尼在2023年最新推出的E2系列中颇受关注的产品,该机采用了酷睿i5 520M、4GB DDR3内存、500GB硬盘以及HD 5650独立显卡的配置,而HD 5650则是ATi竞争主流娱乐笔记本

市场的一款利器,目前采用这款中端独立

显卡

的产品主要有

联想

的Y460A、Acer的4745G以及

索尼

的E2等多款产品,其性能目前已经得到了市场的充分肯定,该机将作为游戏本的代表。

HD 5650独立显卡

GPUZ截图

  而提到移动工作站,无非就是ThinkPad、HP、DELL几家的产品。特别是对于ThinkPad来说,继W700、W700ds和W500之后,ThinkPad W系列又推出了W500的升级型号W510,肩负图形工作站的使命,W510理所当然的将处理器升级到了英特尔新一代高新更移动级处理器酷睿i7,并配置了NVIDIA Quadro FX 880M 1GB专业显卡和4GB DDR3 1066内存。

Quadro FX880M显卡信息

  而W510配备的Quadro FX880M显卡,在移动版Quadro中属于中端产品,FX880M一共有48个流处理器,1GB显存容量,显卡的显存位宽为128-bit,带宽为25.6GB/s。

Futuremark 3DMark Vantage v1.01

Preset=Entry Resolution=1024×768

测试分数总分

显卡得分处理器得分

索尼EA2S

E10404

11831

7639

WPC

E12023

11831

12766

  这两个产品并不属于一个数量级上的产品,但是我们通过3DMarks Vantage的得分发现这两款机型的显卡测试的分数虽然有些差距,但是主要是由于处理器的分数影响的,而在显卡得分上完全一样,在很多人眼中3DMarks的测试分数有很大的参考价值,那么移动工作站和游戏本真的能够互通吗?谁更两全呢?

  游戏显卡和专业显卡有着本质的区别

  虽然两款显卡在3DMarks上的分数类似,但是专业图形卡与游戏卡在图形处理器硬件设计中采用不同的理念。从驱动上就能看出很多的差别。对于游戏卡来说,在驱动程序中只需要对游戏中常用到的部分OpenGL函数能够提供很好支持就可以了,而专业图形卡由于面向范围广泛的专业应用软件,因此它必须要能够对所有OpenGL函数都予以支持。正是这些原因,在游戏中性能很好的游戏卡在运行专业软件时经常会出现性能剧烈下降的现象。

驱动中增加了许多专业软件设置

都能给设计软件进行分别设置和优化

  游戏卡在驱动程序中只需要对游戏中常用到的部分OpenGL函数能够提供很好支持就OK了,而专业显卡由于面向广域的专业图形应用软件,所以它必须要能够对所有OpenGL函数都予以支持。而专业卡的驱动程序完全针对OpenGL的所有函数进行优化,同时,针对各个不同的应用程序的特别之处采用专樱烂脊门的解决办法,如在驱动程序里面提供各种主要软件的优化设置选项,提供专门的驱动程序。反过来说,游戏卡会针对某些热门游戏会专门做一些优化。

3DMAX中的针对性设置

  不过游戏卡目前虽然可以都可以很好地支持各种OpenGL和Direct3D游戏,但是,它们更多地专注于游戏中需要的那些功能。为节约成本而计,对于在游戏中明显不会用到的那些功能如线框模式的抗混淆(反锯齿)、双面光照、3D动态剖切(3D Windows Clipping)等功能一般是不会在硬件中予以支持的。而专业图形卡则不然,与游戏显卡总是运行在全屏幕、只用于表现完全渲染好的场景的情况不同的是,专业应用软件中往往更多的时间是在显示模型正在创建和编辑状态中的情形,因此线框模式、阴影模式下的性能也是至关重要的,各种专业软件所涉及到的功能都应该在硬件上予以支持。另外,从性能上来说,游戏运行需要足够快的速度,而且游戏的场景往往不太复杂,因此游戏的性能瓶颈大多出现在像素或者纹理处理速度上;专业应用中,像高级场景渲染、CAD/CAM、影视用三维动画等应用领域往往会遇上非常大规模的模型和许多光源,因此图形系统的几何与光线处理能力是至关重要的。这两者的区别造成游戏卡与专业卡在硬件设计上各有侧重,那么接下来,我们就全面的用这种软件软件进行分析。

  专业软件测试

  CineBench R10

  CineBench是基于Cinem4D工业三维设计软件引擎的测试软件,用来测试对象在进行三维设计时的性能,它可以同时测试处理器子系统、内存子系统以及显示子系统,在服务器测试平台中显示子系统不重要,因此就只有前两个的成绩具有意义。和大多数工业设计软件一样,CineBench可以完善地支持多核/多处理器,它的显示子系统测试基于OpenGL。

索尼EA2S CINEBENCH R10测试成绩截图

WPC CINEBENCH R10测试成绩截图

  从测试的分数来看,索尼EA2S的显卡得分为5091.而WPC为5961,两者存在一定的差距。 

  POV-Ray 3.6

  POV-Ray是由名为Persistence OF Vision Devlopmentteam的开发小组在DKrace2.12的基础上编写而成的一个场景渲染软件。它为了减少了编制算法程序的时间而使用专用的场景描述语言来绘制三维场景。POV-Ray同时支持32位和64位,提供了Windows、Linux等多个平台下的运行版本。

索尼EA2S测试截图

WPC 测试截图

  我们使用的是内置的Benchmark,测试分辨率为1280*1024,开启了抗锯齿功能。最终我们看到,索尼EA2S测试成绩为187PPS,耗时为787秒;WPC测试成绩为209.65 PPS,耗时为702.74。

  Specviewfer10

  SPECviewperf用于测量运行在OpenGL应用程序接口之下的系统3D图形性能。目前的测试场景涵盖了3ds max, CATIA, EnSight, Maya, Pro/ENGINEER, SolidWorks, UGS NX 3和UGS Teamcenter Visualization Mockup等常见设计软件的应用。在该项测试中,我们选择在1280X1024分辨率下运行所有测试子项目,测试结果如下。

Specviewfer10

Resolution=1280X1024

测试项目索尼EA2S

WPC

3dax-04

18.47

45.06

catia-02

14.63

48.27

ensight-03

17.82

42.11

maya-02

31.04

198.62

proe-04

12.20

62.48

sw-01

29.42

103.26

tcvis-01

7.77

26.44

ugnx-01

8.85

25.31

  从测试的结果来看,游戏移动工作站在专业软件上的优化,让这个测试的差距产生的非常的明显。在3dax04、cATIa02、maya02、proe04、sw01、tcvis六个项目中,游戏显卡根本没有对其进行任何优化,起不到加速作用,核心规格、显存大小、频率都不会对性能造成影响。从性能上来说,游戏运行需要足够快的速度,而且游戏的场景往往不太复杂,因此游戏的性能瓶颈大多出现在像素或者纹理处理速度上;专业应用中,像高级场景渲染,CAD/CAM,影视用三维动画等应用领域往往会遇上非常大规模的模型和许多光源,因此图形系统的几何与光线处理能力是至关重要的。

  应用及游戏测试

  SONY Vegas Pro 8  

  这是一款知名的视频编辑软件,功能丰富而且强大,我们主要利用这款软件进行视频编码输出。视频源为348MB,分辨率1280X720,片长3分15秒视频文件,视频压缩输出格式为:MPEG-4 AVI格式,Xvid Single Pass编码。记录操作时间,时间越短越好。

SONY Vegas Pro 8

渲染画面

  从测试的结果来看,索尼EA2S耗时5分59秒;而WPC为3分10秒,两者存在一定的差距,主要是由于处理器和内存所引起的。

  3D设计软件

3D模型

  专业显卡由于针对专业3D设计软件做过优化,所以在显示上更为准确,图中是在3DMax中一张建筑的模型,请注意图中箭头所指部分,由于游戏显卡无法良好的支持专业3D设计软件,所以在模型的显示上,出现了破面等错误显示。而绿色箭头所指部分才是正确的显示。而且,如果模型越复杂,构成模型所用的面越多,这种错误也就越常见。

  街头霸王4

  PC版《街头霸王IV》是家用机版的完全移植版,将对应Game for Windows Live功能,支持在线对战、游戏内短信交流和即时语音聊天。PC版除了支持高解析度画面输出之外,还为玩家提供了画面渲染风格选择的功能,除与家用机版一样的“普通”模式外,还有“水彩”、“海报”和“烟灰墨”这三种追加的渲染风格。玩家在游戏的设定选项中,可以根据自己的喜好对显示效果进行调解。

街头霸王4 游戏画面

  在测试中我们采用了Capcom官方的PC性能测试软件来进行测试,测试软件包括三场对战回放视频以及8位角色同时登场摆POSE的测试模式,最终将显示对玩家PC硬件的评测结果。我们选择了三种分辨率来运行这个测试,分别为1024X768、1280X720和1366X768像素,其余设置使用游戏默认设置。

索尼EA2S在街头霸王4测试成绩

  而由于W510采用了高分屏,我们通过1024X768、1280X1024、1600X900以及1920X1080分辨率下的fps如何。测试使用的是该游戏的测试程序,仅对分辨率进行调整,其他特效默认。该机在1280X1024分辨率下平均FPS为29.67,在更高分辨率1920X1080下的平均FPS为22.12。这说明以游戏本优化的索尼EA2S在游戏的表现上更为出色。

  游戏本适合游戏 工作站适合工作

  通过以上这些测试,我们基本能够得出游戏本在游戏上的表现更好,而在专业领域绝对不是移动工作站的对手,不过移动工作站如果只玩游戏还真是浪费,两者的侧重点完全不同。另外,对游戏显卡对游戏的优化与对专业软件的优化会有些冲突,产生莫名其妙的问题,因此专业显卡和游戏显卡只能是术业有专攻,针对不同应用程序的兼容和优化,游戏卡跑专业软件会很慢,而专业卡跑游戏的效果也并不理想,正所谓鱼和熊掌不可得兼!

  而移动工作站除了搭配专业显卡让其表现更好之外,该机采用了绚丽的1080P多点触摸屏,并拥有95%广色域,还配备了色彩矫正器来矫正屏幕色彩,可以为用户省去额外的开支。该机强大的性能,特别是酷睿i7所带来的处理器和内存能力都比前一代产品有了明显的提升。如果你需求的是一款更高性能的移动工作站,这款ThinkPad W510将是你更好的选择之一。

W510自带的色彩矫正软件

  而索尼EA2S作为一款消费级的中段产品,可以称之为目前中段游戏本的一个代表,无论是在色彩、操作舒适度还是性能上都可圈可点,这款产品足以应付目前主流的应用,无论您是以日常办公、文本应用、影视娱乐还是游戏娱乐为主的用户,这款产品都能够为您提供一个比较完整的解决方案。通过测试我们也可以看出,不同显卡还是适合各自领域的发挥,交叉的应用无法发挥出该机的完美性能来。

Wireshark抓不到TAG包,怎么可以实现

Standard three-pane packet browser

Multi-platform: Runs on Windows, Linux, OS X, Solaris, FreeBSD, NetBSD, and many others

Multi-interface: Along with a standard GUI, Wireshark includes TShark, a text-mode yzer which is useful for remote capture, ysis, and scripting

The most powerful display filters in the industry

Wireshark is one of the world’s foremost network protocol yzers, and is the standard in many parts of the industry.

It is the continuation of a project that started in 1998. Hundreds of developers around the world have contributed to it, and it it still under active development.

Wireshark’s powerful features make it the tool of choice for network troubleshooting, protocol development, and education worldwide.

Wireshark was written by an international group of networking experts, and is an example of the power of open source. It runs on Windows, Linux, UNIX, and other platforms.

FeaturesWireshark has a rich feature set which includes the following:

Standard three-pane packet browser

Multi-platform: Runs on Windows, Linux, OS X, Solaris, FreeBSD, NetBSD, and many others

Multi-interface: Along with a standard GUI, Wireshark includes TShark, a text-mode yzer which is useful for remote capture, ysis, and scripting

The most powerful display filters in the industry

VoIP ysis

Live capture and offline ysis are supported

Read/write many different capture file formats: tcpdump (libpcap), NAI’s Sniffer™派搜顷 (compressed and uncompressed), Sniffer™ Pro, NetXray™漏碰, Sun snoop and atmsnoop, Shomiti/尘陆Finisar Surveyor, AIX’s iptrace, Microsoft’s Network Monitor, Novell’s LANalyzer, RADCOM’s WAN/LAN Analyzer, HP-UX nettl, i4btrace from the ISDN4BSD project, Cisco Secure IDS iplog, the pppd log (pppdump-format), the AG Group’s/WildPacket’s EtherPeek/TokenPeek/AiroPeek, Visual Networks’ Visual UpTime and many others

Capture files compressed with gzip can be decompressed on the fly

Hundreds of protocols are supported, with more being added all the time

Coloring rules can be applied to the packet list, which eases ysis

Wireshark was written by an international group of networking experts, and is an example of the power of open source. It runs on Windows, Linux, UNIX, and other platforms.

FeaturesWireshark has a rich feature set which includes the following:

Standard three-pane packet browser

Multi-platform: Runs on Windows, Linux, OS X, Solaris, FreeBSD, NetBSD, and many others

Multi-interface: Along with a standard GUI, Wireshark includes TShark, a text-mode yzer which is useful for remote capture, ysis, and scripting

The most powerful display filters in the industry

关于linux btrace的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 深入了解Linux的btrace技术 (linux btrace)